博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于.NET Framework 的Windows应用程序如何回收内存
阅读量:6902 次
发布时间:2019-06-27

本文共 1171 字,大约阅读时间需要 3 分钟。

       
基于.NET Framework 的Windows应用程序,你会发现你对程序的操作越多,
占用的内存会
不断
向上飙升,即使你结束了长时间运行的操作.这种情况对于一个非常小的应用都是这样.
这种情况一般并不是.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兆之间了.
不信你可以试一试.

转载地址:http://expdl.baihongyu.com/

你可能感兴趣的文章
[Javascript] Fetch API
查看>>
[改善Java代码]不使用stop方法停止线程
查看>>
Spring Boot新模块devtools
查看>>
关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结
查看>>
HAProxy的三种不同类型配置方案
查看>>
Unity3d之截图
查看>>
Windows下的Jdk 1.7*安装并配置(图文详解)
查看>>
JS判断客户端是手机还是PC的2个代码(转)
查看>>
分布式服务框架设计和实现
查看>>
dispatchTouchEvent
查看>>
Zabbix-3.0.3实现微信(WeChat)告警
查看>>
ArcGIS for Desktop入门教程_第三章_Desktop软件安装 - ArcGIS知乎-新一代ArcGIS问答社区...
查看>>
解决客户端访问https报错
查看>>
PHPCMS列表循环序列号自增标签代码
查看>>
2016年第15本:微信营销与运营----策略、方法、技巧与实践
查看>>
HTML之Data URL(转)
查看>>
注解式控制器
查看>>
ASP.Net中实现上传过程中将文本文件转换成PDF的方法
查看>>
maven The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path错误
查看>>
【数据库】数据库的并发问题与锁机制
查看>>