Как определить, является ли утечка управляемой памяти утечкой памяти? - PullRequest
4 голосов
/ 12 сентября 2011

Мой процесс .NET, который взаимодействует с собственными dll, вызывает исключение OutOfMemory. Ниже приведены команды! Address -summary и --eeheap-gc. Означает ли это, что это управляемая утечка или собственная утечка?

0: 000>! Address -summary
ProcessParametrs 002f10a8 в диапазоне 002f0000 003f0000
Окружающая среда 002f07f0 в диапазоне 002f0000 003f0000

-------------------- РЕЗЮМЕ об использовании ------------------------- -
TotSize (KB) Pct (Tots) Pct (Busy) Использование
17773000 (384460): 18,33% 22,25%: RegionUsageIsVAD
168aa000 (369320): 17,61% 00,00%: RegionUsageFree
110fe000 (279544): 13,33% 16,18%: RegionUsageImage
395fe000 (940024): 44,83% 54,41%: RegionUsageStack
396000 (3672): 00,18% 00,21%: RegionUsageTeb
7540000 (120064): 05,73% 06,95%: RegionUsageHeap
0 (0): 00,00% 00,00%: RegionUsagePageHeap
1000 (4): 00,00% 00,00%: RegionUsagePeb
0 (0): 00,00% 00,00%: RegionUsageProcessParametrs
0 (0): 00,00% 00,00%: RegionUsageEnvironmentBlock
Итого: 7fff0000 (2097088 КБ) Занято: 69746000 (1727768 КБ)

-------------------- Тип РЕЗЮМЕ ------------------------- -
TotSize (KB) Pct (Tots) Использование
168aa000 (369320): 17,61%:
15970000 (353728): 16,87%: MEM_IMAGE
47e9000 (73636): 03,51%: MEM_MAPPED
4f5ed000 (1300404): 62,01%: MEM_PRIVATE

-------------------- РЕЗЮМЕ ------------------------- -
TotSize (KB) Pct (Tots) Использование
303e1000 (790404): 37,69%: MEM_COMMIT
168aa000 (369320): 17,61%: MEM_FREE
39365000 (937364): 44,70%: MEM_RESERVE

Самый большой свободный регион: база 0d8b1000 - размер 0010f000 (1084 КБ)

0: 000>! EEHeap -gc
Количество куч кучи: 1
поколение 0 начинается с 0x425f776c
поколение 1 начинается с 0x425f5a08
поколение 2 начинается с 0x01881000
контекст выделения эфемерного сегмента: отсутствует
Сегмент начала выделен размером
01880000 01881000 0281ecf8 0x00f9dcf8 (16375032)
12010000 12011000 12f83a04 0x00f72a04 (16198148)
1e0a0000 1e0a1000 1e734094 0x00693094 (6893716)
41e80000 41e81000 427048d0 0x008838d0 (8927440)
Куча больших объектов начинается с 0x02881000
Сегмент начала выделен размером
02880000 02881000 02a36958 0x001b5958 (1792344)
13010000 13011000 137c0020 0x007af020 (8056864)

Общий размер 0x378b9d8 (58243544)

Размер кучи GC 0x378b9d8 (58243544)

1 Ответ

7 голосов
/ 12 сентября 2011
395fe000 ( 940024) : 44.83% 54.41% : RegionUsageStack

Избегайте одновременного запуска тысячи потоков.

...