.NET Framework回收内存操作细节披露
创始人
2024-06-19 13:11:15
0

.NET Framework中实际上有很多应用技巧需要我们在具体操作中去慢慢发现,从而掌握这些提高开发效率的应用技巧。基于.NET Framework 的Windows应用程序,你会发现你对程序的操作越多,占用的内存会不断向上飙升,即使你结束了长时间运行的操作.这种情况对于一个非常小的应用都是这样.#t#

这种情况一般并不是.Net 内存泄露,而是因为.Net没有即时回收你分配的内存。下面是从一个朋友那儿搞到的一段代码,它能够帮助你即时实现.NET Framework回收内存的操作.

 

  1. public class RevokeMemory  
  2. {  
  3. public static void ReduceMemoryFootPrint()  
  4. {  
  5. int currentMinWorkingSetValue = 0;  
  6. int currentMaxWorkingSetValue = 0;  
  7. Process currentProcess = Process.
    GetCurrentProcess();  
  8. try  
  9. {  
  10. if(GetProcessWorkingSetSize(current
    Process.Handle, out currentMinWorking
    SetValue, out currentMaxWorkingSetValue))  
  11. {  
  12. currentProcess.MinWorkingSet = (IntPtr)
    currentMinWorkingSetValue;  
  13. }  
  14. }  
  15. catch(Exception err)  
  16. {  
  17. string additionalInfo = "MinWorkingSet
     value is set to: "
     + currentMinWorking
    SetValue.ToString();  
  18. additionalInfo += " Process In Error: 
    " + currentProcess.ProcessName;  
  19. //Log error message  
  20. }  
  21. }  
  22. [DllImport("kernel32.dll")]  
  23. public static extern bool GetProcess
    WorkingSetSize( IntPtr proc, out int 
    min, out int max );  
  24. [DllImport("kernel32.dll")]  
  25. public static extern bool SetProcess
    WorkingSetSize( IntPtr proc, int min, int max );  

.NET Framework回收内存调用的时机:

1. 主界面上做一个计时器,每间隔一定的时间进行调用,但鄙人认为这种效果并不好。在你进行长时间运行的操作之前。需要禁止它。

2.每完成一个大的操作或者比较消耗内存的操作之后,调用。

本人做了一个.NET Framework回收内存的测试,以前几时兆的内存飙升,现在总的消耗的内存都在几兆到30兆之间了.

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...