重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要讲解了“.NET Framework如何实现内存回收”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.NET Framework如何实现内存回收”吧!
成都创新互联专注于邢台网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供邢台营销型网站建设,邢台网站制作、邢台网页设计、邢台网站官网定制、小程序定制开发服务,打造邢台网络公司原创品牌,更为您提供邢台网站排名全网营销落地服务。
.NET Framework中实际上有很多应用技巧需要我们在具体操作中去慢慢发现,从而掌握这些提高开发效率的应用技巧。基于.NET Framework 的Windows应用程序,你会发现你对程序的操作越多,占用的内存会不断向上飙升,即使你结束了长时间运行的操作.这种情况对于一个非常小的应用都是这样.
这种情况一般并不是.Net 内存泄露,而是因为.Net没有即时回收你分配的内存。下面是从一个朋友那儿搞到的一段代码,它能够帮助你即时实现.NET Framework回收内存的操作.
public class RevokeMemory
{
public static void ReduceMemoryFootPrint()
{
int currentMinWorkingSetValue = 0;
int currentMaxWorkingSetValue = 0;
Process currentProcess = Process.
GetCurrentProcess();
try
{
if(GetProcessWorkingSetSize(current
Process.Handle, out currentMinWorking
SetValue, out currentMaxWorkingSetValue))
{
currentProcess.MinWorkingSet = (IntPtr)
currentMinWorkingSetValue;
}
}
catch(Exception err)
{
string additionalInfo = "MinWorkingSet
value is set to: " + currentMinWorking
SetValue.ToString();
additionalInfo += " Process In Error:
" + currentProcess.ProcessName;
//Log error message
}
}
[DllImport("kernel32.dll")]
public static extern bool GetProcess
WorkingSetSize( IntPtr proc, out int
min, out int max );
[DllImport("kernel32.dll")]
public static extern bool SetProcess
WorkingSetSize( IntPtr proc, int min, int max );
}
.NET Framework回收内存调用的时机:
1. 主界面上做一个计时器,每间隔一定的时间进行调用,但鄙人认为这种效果并不好。在你进行长时间运行的操作之前。需要禁止它。
2.每完成一个大的操作或者比较消耗内存的操作之后,调用。
感谢各位的阅读,以上就是“.NET Framework如何实现内存回收”的内容了,经过本文的学习后,相信大家对.NET Framework如何实现内存回收这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!