¿Reduciendo el uso de memoria de las aplicaciones .NET?

¿Cuáles son algunos consejos para reducir el uso de memoria de las aplicaciones .NET? Considere el siguiente programa simple de C #.

class Program
{
    static void Main(string[] args)
    {
        Console.ReadLine();
    }
}

Compilado enlanzamiento modo parax64 y ejecutándose fuera de Visual Studio, el administrador de tareas informa lo siguiente:

Working Set:          9364k
Private Working Set:  2500k
Commit Size:         17480k

Es un poco mejor si se compila solo parax86:

Working Set:          5888k
Private Working Set:  1280k
Commit Size:          7012k

Luego probé el siguiente programa, que hace lo mismo pero intenta recortar el tamaño del proceso después de la inicialización en tiempo de ejecución:

class Program
{
    static void Main(string[] args)
    {
        minimizeMemory();
        Console.ReadLine();
    }

    private static void minimizeMemory()
    {
        GC.Collect(GC.MaxGeneration);
        GC.WaitForPendingFinalizers();
        SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle,
            (UIntPtr) 0xFFFFFFFF, (UIntPtr)0xFFFFFFFF);
    }

    [DllImport("kernel32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool SetProcessWorkingSetSize(IntPtr process,
        UIntPtr minimumWorkingSetSize, UIntPtr maximumWorkingSetSize);
}

Los resultados enx86 Lanzamiento fuera de Visual Studio:

Working Set:          2300k
Private Working Set:   964k
Commit Size:          8408k

Lo cual es un poco mejor, pero todavía parece excesivo para un programa tan simple. ¿Hay algún truco para hacer que un proceso de C # sea un poco más ágil? Estoy escribiendo un programa que está diseñado para ejecutarse en segundo plano la mayor parte del tiempo. Ya estoy haciendo cualquier cosa de la interfaz de usuario en un separadoDominio de aplicación lo que significa que las cosas de la interfaz de usuario se pueden descargar de forma segura, pero el uso de 10 MB cuando está sentado en segundo plano parece excesivo.

PD En cuanto a por qué me importaría --- los usuarios (de poder) tienden a preocuparse por estas cosas. Incluso si no tiene casi ningún efecto en el rendimiento, los usuarios expertos en tecnología semi (mi audiencia objetivo) tienden a tener problemas con el uso de la memoria de fondo de la aplicación. Incluso me enloquece cuando veo a Adobe Updater tomando 11 MB de memoria y me siento aliviado por el toque calmante de Foobar2000, que puede tomar menos de 6 MB incluso cuando se reproduce. Sé que en los sistemas operativos modernos, esto realmente no importa mucho desde el punto de vista técnico, pero eso no significa que no afecte la percepción.

Respuestas a la pregunta(9)

Su respuesta a la pregunta