Куча против управляемой кучи - PullRequest
3 голосов
/ 18 ноября 2010

У меня большое приложение .NET, которое в настоящее время использует частный рабочий набор размером 865 МБ.

Итак, я запустил VMMap и увидел, что куча составляет около 587 МБ, а управляемая куча - только 255 МБ (также частный рабочий набор).

Это нормально, когда весь этот неуправляемый код использует столько памяти (что, я полагаю, используется во время выполнения .net)?

Примечание : я использовал WinDbg с расширением SOS. Проблема не в потреблении памяти в управляемой куче, а в «неуправляемой» куче.

Снимок экрана VMMap: http://img687.imageshack.us/img687/1529/vmmap.png

Дополнительная информация: Общий размер: 1487MB Отправлено: 1359MB Частный: 931MB Всего WS: 967 МБ Частный WS: 865MB Бесплатно (Размер): 609 МБ

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

Ответы [ 2 ]

0 голосов
/ 18 ноября 2010

Используйте CLRProfiler (http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a362781c-3870-43be-8926-862b40aa0cd0&DisplayLang=en), чтобы увидеть, какие объекты находятся в куче.

Примечание. Версия .NET 2.0 также работает с .NET 4.0.

0 голосов
/ 18 ноября 2010

да!неуправляемые объекты, если они не освобождены должным образом, могут даже привести к утечке памяти.Однажды я обнаружил, что объект obcconnection поглощает гигабайты оперативной памяти (он пытался открывать / закрывать соединения в цикле).настолько, что приложение в конечном итоге выйдет из памяти и зависнет.

с какими неуправляемыми объектами вы имеете дело?

...