从ZedGraph、OutLookBar、DockPanel看开源代码的内存泄露问题

前段时间,做WinForm开发,用到了一些开源控件,由于系统的硬件资源(内存和CPU)较少、软件的计算量也比较大,本人当时对.net内存管理也不是很了解,结果软件总是经常被OutOfMemory挂掉。经过一根阵痛之后,对.net内存管理有了一定深入了解,对自己写的代码部分进行了优化和内存泄露整改。但是在长期测试中软件还有每天会有内存增长。接下来,用.NET Memory Profiler对软件进行内存检查,最终发现在ZedGraph、OutLookBar、DockPanel中均有内存泄露部分。以下为例子说明。

ZedGraph.Fill类中,有一个Brush  _brush,其中有多个方法对_brush有内存申请操作,但没有地方对_brush有显示的Dispose()调用;

还有一个Bitmap _gradientBM,有内存申请,无显示Dispose();

还有一个Image _image,也是有申请,无显示Dispose();

DockPanel中VS2005AutoHideStrip

DrawTab()方法中这样一句

g.DrawString(content.DockHandler.TabText, TextFont, new SolidBrush(textColor), rectText, StringFormatTabVertical);

 

这只是我发现的一小部分,望大家能共同发现其中更多的问题。

虽然上面的例子中,一次函数调用可能只损失几十个字节的内存,但对于需要长期稳定运行的程序而言,这些问题也是致命的。

 

虽然这些开源的控件给我们的软件开发带来了极大的便利,但是由于它们没有经过严格的测试,有可能对我们的程序造成影响,而且让人难以发现。

 

首次发文,欢迎板砖。

 

 

转载于:https://www.cnblogs.com/chismxna/archive/2010/10/17/1853854.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值