2012-03-11 4 views
0

Мое приложение использует от 5 ГБ до 6 ГБ памяти. Мы провели диагностику отладки IIS, и она показывает следующее:утечка памяти - кисти gdiplus.dll

GdiPlus.dll несет ответственность за выдающиеся ассигнования в размере 2,49 ГБ. Ниже перечислены две наиболее популярные функции памяти:

GdiPlus! GpMemoryBitmap :: AllocBitmapData + c2: 2,47 ГБ стоит выдающихся распределений. GdiPlus! EpScanBitmap :: Старт + 212: 6.79 Мбайт стоит выдающихся ассигнований.

Это было обнаружено в w3wp.exe_ Projectname-2 _PID_ _Date__03_10_2012__Time_03_15_14PM_ _Leak Dump - Private Bytes.dmp

что является причиной этой утечки? Это происходит из-за кистей.

Пожалуйста, дайте некоторое представление/или как это решить?

Заранее благодарен.

+1

Являются ли вы 'Dispose()' правильными ресурсами? – ebutusov

+0

Я пытаюсь найти, как найти эту проблему. Как его найти? – user1165815

ответ

3

Возможно, вы забываете выпускать дескрипторы GDI (растровые изображения, кисти, ручки и т. Д.). Большинство объектов GDI реализуют IDisposable, и вы должны всегда вызывать метод Dispose, когда вы закончите использовать эти объекты. using заявление может помочь с этим:

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

    ... 

} // b.Dispose is called automatically here 
+0

Спасибо, Томас! – user1165815

0

Я бы сказал (из информации alocator, что вы предоставили), что вы не убивают ваши растровые изображения. Каждый объект GDI + равен IDisposable, поэтому Dispose() используйте ключевое слово using как предлагается.