Някакъв начин за създаване на дъмп на купчина/хистограма на OutOfMemoryException в C#?

В света на Java успях да уточня, че JVM трябва да създаде файл за изхвърляне на паметта при първата OutOfMemoryError. Има ли нещо еквивалентно в C#?

Хийп дъмп би бил идеален, но бих се задоволил с хистограма.

Ако няма начин да направите това автоматично, има ли начин да закачите това изключение и след това да преминете купчината ръчно?


person chillitom    schedule 11.03.2012    source източник
comment
stackoverflow.com/questions/4123021/   -  person Mitch Wheat    schedule 11.03.2012
comment
stackoverflow.com/questions/1721111/   -  person pavel.baravik    schedule 11.03.2012


Отговори (2)


Можете да използвате помощната програма на MS Debugging tools ADPlus, за да получите дъмп на процеса, който включва всички купчини. След това с помощта на WinDBG.exe (също в инструментите за отстраняване на грешки) можете да използвате командата !DumpHeap, за да получите всички необходими данни.

малко стара, но полезна връзка КАКТО

person Menahem    schedule 11.03.2012
comment
Благодаря @Menahem, добро предложение, но наистина бих искал нещо, което може да записва изхода на машините на потребителите, няма да мога да прикача програма за отстраняване на грешки по това време. - person chillitom; 11.03.2012
comment
@chillitom в този случай можете да конфигурирате програмата за отстраняване на грешки да прави дъмпа безшумно на клиентската машина, автоматично, когато това се случи. след това копирайте дъмпа на машина, където можете да го анализирате. Мич Уит публикува връзка към описание как да направите това. - person Menahem; 11.03.2012

Бих използвал procdump, защото можете лесно да го настроите преди срива да изхвърля паметта, когато възникне сривът. След това използвайте windbg, за да прегледате паметта.

Бих добавил, че ако не е веднага очевидно къде отива паметта (с помощта на командата за инструменти sos.dll !dumpheap -stat), тогава можете да използвате procdump, за да вземете няколко изхвърляния при срив на определени интервали, така че да можете да проследите какво паметта расте.

Ако не сте запознати с windbg и sos, може да искате да проверете това.

person Davin Tryon    schedule 11.03.2012