基于.NET Framework 的Windows应用程序如何回收内存
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了基于.NET Framework 的Windows应用程序如何回收内存,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1840字,纯文字阅读大概需要3分钟。
内容图文
![基于.NET Framework 的Windows应用程序如何回收内存](/upload/InfoBanner/zyjiaocheng/963/419d14050634459abb0c13d7c4328853.jpg)
占用的内存会不断向上飙升,即使你结束了长时间运行的操作.这种情况对于一个非常小的应用都是这样.
这种情况一般并不是.Net 内存泄露,而是因为.Net没有即时回收你分配的内存。下面是从一个朋友那儿搞到的一段代码,
它能够帮助你即时回收内存.
public?class?RevokeMemory
????{
????????public?static?void?ReduceMemoryFootPrint()
????????{
????????????int?currentMinWorkingSetValue?=?0;
????????????int?currentMaxWorkingSetValue?=?0;
????????????Process?currentProcess?=?Process.GetCurrentProcess();
????????????try
????????????{
????????????????if(GetProcessWorkingSetSize(currentProcess.Handle,?out?currentMinWorkingSetValue,?out?currentMaxWorkingSetValue))
????????????????{
????????????????????currentProcess.MinWorkingSet?=?(IntPtr)currentMinWorkingSetValue;
????????????????}
????????????}
????????????catch(Exception?err)
????????????{
????????????????string?additionalInfo?=?"MinWorkingSet?value?is?set?to:?"?+?currentMinWorkingSetValue.ToString();
????????????????additionalInfo?+=?"?Process?In?Error:?"?+?currentProcess.ProcessName;
????????????????//Log?error?message
????????????}
????????}
????????[DllImport("kernel32.dll")]
????????public?static?extern?bool?GetProcessWorkingSetSize(?IntPtr?proc,?out?int?min,?out?int?max?);
????????[DllImport("kernel32.dll")]
????????public?static?extern?bool?SetProcessWorkingSetSize(?IntPtr?proc,?int?min,?int?max?);
????}
调用的时机:
1. 主界面上做一个计时器,每间隔一定的时间进行调用,但鄙人认为这种效果并不好。在你进行长时间运行的操作之前。需要禁止它。
2.每完成一个大的操作或者比较消耗内存的操作之后,调用。
本人做了一个测试,以前几时兆的内存飙升,现在总的消耗的内存都在几兆到30兆之间了.
不信你可以试一试.
转载于:https://www.cnblogs.com/SharkXu/archive/2006/10/17/RevokeMemory.html
内容总结
以上是互联网集市为您收集整理的基于.NET Framework 的Windows应用程序如何回收内存全部内容,希望文章能够帮你解决基于.NET Framework 的Windows应用程序如何回收内存所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。