当前位置:编程学习 > C#/ASP.NET >>

有关C#内存问题


烦请各位大神帮看看,我用C#写了一个连续运行的程序。为检查其是否会内存泄露,每间隔2分钟采集其内存使用量,两天下来,得到趋势图如上!请问,这正常吗?程序里该清理的对象我也清理了啊,GC机制貌似没起作用啊!程序中除了绘图和读取数据库,我也没用啥非托管的资源,而且我也确定二者用完就给清理了!这内存递增,让我心里发毛啊! C# 内存泄露 --------------------编程问答--------------------
引用 楼主 wolfwestern 的回复:

烦请各位大神帮看看,我用C#写了一个连续运行的程序。为检查其是否会内存泄露,每间隔2分钟采集其内存使用量,两天下来,得到趋势图如上!请问,这正常吗?程序里该清理的对象我也清理了啊,GC机制貌似没起作用啊!程序中除了绘图和读取数据库,我也没用啥非托管的资源,而且我也确定二者用完就给清理了!这内存递增,让我心里发毛啊!


画图就是吃资源的一个东西。。。其他的还好。 --------------------编程问答-------------------- http://www.doc88.com/p-2864735320133.html
内存从系统对进程的管理角度分专用工作集和普通工作集
从.Net的角度分托管和非托管(比如你那绘图、链数据库等)
用.NET Memory Profiler多做测试 --------------------编程问答-------------------- http://www.cnblogs.com/eaglet/archive/2008/09/05/1285169.html --------------------编程问答-------------------- 如果你处理一张图片,一打开程序就会发现程序已经占用80M内存了。而且通常也不会去释放什么内存,因为进程内内存可以重复使用给其它对象,而不是反复释放之后再反复申请。

你的程序不过在45M到52M之间,没有什么意外,挺正常的。 --------------------编程问答-------------------- 运行两天才增加这么一点没问题,每天重启一次就解决了,

内存增加不一定是内存泄露,动态分配内存都有碎片问题,因为反复分配,总是有一些小的内存块无法重新利用,所以越积越多,这部分小块内存就是碎片,他们占的空间无法利用,所以造成浪费,这是没法避免的,除非你分配的内存都一样大,
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,