Любой способ создать дамп / гистограмму кучи на OutOfMemoryException в C #? - PullRequest
1 голос
/ 11 марта 2012

Вернувшись в мир Java, я смог указать, что JVM должна создать файл дампа кучи на первом OutOfMemoryError.Есть ли что-нибудь эквивалентное в C #?

Дамп кучи был бы идеальным, но я бы согласился на гистограмму.

Если нет способа сделать это автоматически, есть ли способ перехватить это исключение, а затем вручную пройтись по куче?

Ответы [ 2 ]

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

Я бы использовал procdump , потому что вы можете легко настроить его до сбоя, чтобы выгрузить память при возникновении сбоя.Затем используйте windbg для просмотра памяти.

Я бы добавил, что если неясно, куда идет память (с помощью команды sos.dll tools ! Dumpheap -stat ), товы можете использовать procdump для получения нескольких аварийных дампов через определенные промежутки времени, чтобы вы могли отслеживать, какая память растет.

Если вы не знакомы с windbg и sos, вы можете проверить это.

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

Вы можете использовать утилиту ADPlus для инструментов MS Debugging, чтобы получить дамп процесса, который включает в себя все кучи.Затем с помощью WinDBG.exe (также в средствах отладки) вы можете использовать команду! DumpHeap, чтобы получить все необходимые данные.

немного старая, но полезная ссылка на HOWTO

...