.NET - разные результаты по размеру кучи DebugDiag и perfmon GC

Я использую DebugDiag 1.2 и perfmon.exe для мониторинга использования памяти для приложения.NET.

DebugDiag показывает GC Heap Size 35,51 МБ, тогда как для того же самого Perfmon показывает #Bytes in all heaps 4,5 МБ.

Почему оба значения разные? Разве они не представляют одну и ту же вещь?

1 ответ

"Байты во всех кучах" представляет память, используемую всеми объектами.NET, которые в данный момент используются приложением, где в качестве размера кучи GC фактически используется память, выделенная в куче.NET. Причина, по которой размер кучи GC будет больше, заключается в том, что он включает память, используемую объектами, помеченными как "БЕСПЛАТНЫЕ". .NET не сразу возвращает обратно всю память, помеченную как ОСВОБОДНУЮ, обратно в ОС и которая освобождается при следующей сборке мусора, так что память все еще помечается как фиксация и все еще находится в куче.net, но на самом деле ничем не используется в приложении.

Чтобы получить более полное представление об этом, перейдите по http://blogs.msdn.com/b/tess/archive/2005/11/25/496973.aspx и найдите слово Free в этом блоге.

Другие вопросы по тегам