Wie kann ich die Speichergröße für .net / Mono-Prozesse begrenzen?

Stellen Sie sich vor, Sie haben eine Anwendung (einzelner Prozess) in c # geschrieben

Standardmäßig weist die Anwendung sehr viel mehr virtuellen Speicher zu, als sie benötigt (z. B. beträgt der residente Speicher ungefähr 10 MB, während der virtuelle Speicher ungefähr mehrere GB beträgt).

In Java ist es möglich, eine Option zu verwenden, um dies einzuschränkenjava -mx128m

Wie kann ich dasselbe für .NET / Mono-Anwendungen tun? Und die Bonusfrage: Ist es möglich, die GC-Optionen zu erzwingen / zu ändern, um die Speichernutzung immer so gering wie möglich zu halten?

Grundsätzlich ist es mein Ziel, eine .net-Anwendung mit minimalem Speicherbedarf zu erstellen

BEARBEITEN: um es klarer zu machen, füge ich dieses Szenario ein, da fast jede .net-Anwendung ein ähnliches Problem zu haben scheint:

Ich führe ein monodevelop aus, welches c # -Anwendung unter mono ist - es isst1800 MB virtueller Speicher, während es nur verwendet291 MB des residenten Gedächtnisses. Das bedeutet, dass die Anwendung nur weniger als 300 MB Speicher benötigt, aber aus unbekannten Gründen 1800 MB anfordert. Aus diesem Grund möchte ich herausfinden, wie dies verhindert werden kann.

Dies ist wahrscheinlich kein Problem für die meisten Benutzer, kann aber für Anwendungen, die auf Clustern wie SGE ausgeführt werden, problematisch sein, wenn die Aufgabe durch den virtuellen Speicher begrenzt ist.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage