winfrom占用内存过大,最小化后会释放很多内存,应怎样处理,防止内存占用过大
写的程序才50多M,查了一下内存,占了60M左右,虚拟内存也占60m左右,最小化程序后内存只占了2m左右,虚拟内存基本没变,在最大化内存占用在10M左右,虚拟内存也没增加,如果运行一段时间,打开一些窗口内存增长很大,这是怎么回事,是不是关闭子窗体后没有立即释放内存,是不是要手动调用dispose方法释放内存。请高手指点。谢谢
Window Form程序占内存是比较大,只要不存在内存 泄露就行
窗体关闭时可以使用Dispose释放一些
50多MB应该是正常的!提供一些建议,希望有所帮助!
1:对于模态窗体,要显式调用Dispose对资源进行释放
2:尽量避免创建同一窗口的多个实例,可考虑缓存
3:使用GC.Collect()强制回收资源
4:检查代码,看是否有内存泄露
#region 内存回收
[DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")]
public static extern int SetProcessWorkingSetSize(IntPtr process,
int minSize,
int maxSize
);
/// <summary>
/// 释放内存
/// </summary>
public static void ClearMemory()
{
GC.Collect();
GC.WaitForPendingFinalizers();
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
}
}
#endregion
在最小化的时候调用一下就ok了
你这个内存占用还好吧,只要对象不用的时候显示调用一下DISPOSE释放,GC会过段时间自动释放的