.NET Framework回收内存操作细节披露
来源:互联网 发布:部落冲突法术工厂数据 编辑:程序博客网 时间:2024/04/29 00:25
.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回收内存的测试,以前几时兆的内存飙升,现在总的消耗的内存都在几兆到30兆之间了.
- .NET Framework回收内存操作细节披露
- .NET Framework 字符串相关操作细节介绍
- .NET framework的内存管理和垃圾回收
- .net framework 垃圾回收机制
- .net 内存回收机制
- .Net中的内存回收机制
- .Net中的内存回收机制
- .Net中的内存回收机制
- .Net内存管理、垃圾回收
- .Net中的内存回收机制
- .NET内存管理、垃圾回收
- java volatile内存操作细节
- 2 .NET FrameWork内存管理
- .Net Framework内存管理简介
- net framework中的内存分配
- .net compact framework 注册表操作
- Garbage Collection : Automatic Memory Management in the Microsoft .NET Framework 垃圾回收:在微软NET框架自动内存管理(一)
- Garbage Collection Part 2: Automatic Memory Management in the Microsoft .NET Framework垃圾回收:在微软NET框架自动内存管理 (二)
- 从技术转向管理的过度,如何处理
- GridView 模板列
- 典型开源3D引擎分类比较
- 先进的电子病历核心编辑器-UniEditor(200901227已停用,请下载升级版本3.0)
- 代码走查
- .NET Framework回收内存操作细节披露
- Insert Update Delete Select
- MeeGo是什么?
- 拆分字段
- Python之感
- 关于
- 3.15-如何使视图初始显示的规模为最小或最大?
- Windows7可以运行在低配置的pc上
- AX资料