我的應用程序正在運行.NET 4.0和WinForm。如何減少我的應用程序中的虛擬內存(提交)大小?
使用Mdi應用程序和第三方控件。
當它運行時,增長仍然是虛擬內存(提交)大小。 我可以減少與諸如線
GC.Collect(GC.MaxGeneration);
GC.WaitForPendingFinalizers();
SetProcessWorkingSetSize(p.Handle, -1, -1);
[DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)]
public static extern int SetProcessWorkingSetSize(IntPtr process, int minimumWorkingSetSize, int maximumWorkingSetSize);
它運作良好釋放工作集的大小。 好吧,一些屏幕必須開放商業邏輯,所以內存大小仍在增長,最終死了應用程序。
但是我無法減少或釋放已經增長的虛擬內存大小。
我想配置的app.config
<runtime>
<DisableDoubleMapping enabled="true" />
<gcTrimCommitOnLowMemory enabled="true"/>
</runtime>
這是行不通的。 對此有任何影響。
我試圖用VMMap 3.1查看。 圖像主要是.net ngen圖像。 程序集和其他引用dll的部分不是那麼大。 當然一些dll(winform的第三個pary控件)大約5〜6MB。
如何在我的應用程序中減少虛擬內存(提交)大小?
請儘快讓我知道更好的方法。 像這樣
SetProcessWorkingSetSize(p.Handle, -1, -1);
謝謝。
沒有魔杖,你必須編寫更聰明的代碼。減少工作集的大小是毫無意義的。 –