内存泄漏 - gdiplus.dll刷子

时间:2012-03-11 14:16:18

标签: c# memory memory-leaks

我的应用程序使用5 GB到6 GB的内存。我们运行了IIS调试诊断程序,它显示以下内容:

GdiPlus.dll负责2.49 GBytes的未完成分配。以下是前2个内存消耗函数:

GdiPlus!GpMemoryBitmap :: AllocBitmapData + c2:2.47 GBytes的未完成分配。 GdiPlus!EpScanBitmap ::开始+ 212:6.79 MBytes的未完成分配。

在w3wp.exe_ 项目名称-2中检测到 _PID_ 28824 _Date__03_10_2012__Time_03_15_14PM_ 457 _Leak Dump - Private Bytes.dmp

导致这种泄漏的原因是什么?这是因为刷子。

请提出一些想法/或如何解决这个问题?

提前致谢。

2 个答案:

答案 0 :(得分:3)

您可能忘记发布GDI句柄(位图,画笔,笔等)。大多数GDI对象实现IDisposable,并且在使用完这些对象后应始终调用Dispose方法。 using语句可以帮助解决这个问题:

using (Brush b = new SolidBrush(Color.Black))
{

    ...

} // b.Dispose is called automatically here

答案 1 :(得分:0)

我会说(根据你提供的alocator信息)你没有杀死你的位图。每个GDI +对象都是IDisposable,因此Dispose()或使用using关键字建议。