утечка памяти - щетки gdiplus.dll - PullRequest
0 голосов
/ 11 марта 2012

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

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

GdiPlus! GpMemoryBitmap :: AllocBitmapData + c2: объем незавершенных выделений составляет 2,47 ГБ.GdiPlus! EpScanBitmap :: Start + 212: 6,79 МБ ожидающих выделений.

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

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

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

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 11 марта 2012

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

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

    ...

} // b.Dispose is called automatically here
0 голосов
/ 11 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...