温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

.NET Framework如何实现内存回收

发布时间:2021-06-17 15:03:30 来源:亿速云 阅读:127 作者:chen 栏目:编程语言

这篇文章主要讲解了“.NET Framework如何实现内存回收”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.NET Framework如何实现内存回收”吧!

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

这种情况一般并不是.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如何实现内存回收”的内容了,经过本文的学习后,相信大家对.NET Framework如何实现内存回收这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI