WinForm程序点用一直是个大问题,时间运行长了,越来越大,最近在网上发现个贴,试了上面方法,从进程来看,内存确实降下去了,效果还不错。 这里整理了一些网上关于Winform如何降低系统内存占用的资料,供参考:...
WinForm程序点用一直是个大问题,时间运行长了,越来越大,最近在网上发现个贴,试了上面方法,从进程来看,内存确实降下去了,效果还不错。
这里整理了一些网上关于Winform如何降低系统内存占用的资料,供参考:
1、使用性能测试工具dotTrace 3.0,它能够计算出你程序中那些代码占用内存较多
2、强制垃圾回收
3、多dispose,close
4、用timer,每几秒钟调用:SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1);具体见附录。
5、发布的时候选择Release
6、注意代码编写时少产生垃圾,比如String + String就会产生大量的垃圾,可以用StringBuffer.Append
7、this.Dispose(); this.Dispose(True); this.Close(); GC.Collect();
8、注意变量的作用域,具体说某个变量如果只是临时使用就不要定义成成员变量。GC是根据关系网去回收资源的。
9、检测是否存在内存泄漏的情况,详情可参见:内存泄漏百度百科
#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) { App.SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1); } } #endregion
原文:https://www.jb51.net/article/56682.htm
本文标题为:C# WinForm应用程序降低系统内存占用方法总结【转】
基础教程推荐
- 详解搭建基于C#和Appium的Android自动测试环境 2023-04-21
- C#中逆变的实际应用场景详解 2023-05-16
- C#实例化和静态类对象调用对比 2023-05-31
- ubuntu下.NET Core修改版本(卸载) 2023-09-27
- WPF开发技巧之花式控件功能扩展详解 2023-04-22
- C#编程高并发的几种处理方法详解 2022-12-02
- Avalonia封装实现指定组件允许拖动的工具类 2023-07-18
- 浅析C# 结构体struct 2023-03-10
- C# 实现在控制台上换行输出与不换行输出 2023-04-10
- C#如何通过匿名类直接使用访问JSON数据详解 2022-12-06