У меня есть JVM с 12 гигабайтами общего ОЗУ, из которых 7 ГБ выделяется старому поколению.
Кажется, что есть некоторая утечка памяти, потому что почти весь старый gen заполнен и не будет освобождаться, когда я планирую GC (процесс не делает ничего другого в это время).
Дамп jmap -histo показывает только объекты размером менее 1 гигабайта. Где пропавшие 6 концертов? Какой лучший инструмент вы предлагаете для диагностики этого?
Вот вершина вывода jmap:
num #instances #bytes class name
----------------------------------------------
1: 429853 68725736 <constMethodKlass>
2: 429853 51594040 <methodKlass>
3: 37503 49611368 <constantPoolKlass>
4: 37503 31109576 <instanceKlassKlass>
5: 191716 28019968 [C
6: 32573 26933152 <constantPoolCacheKlass>
7: 86158 13789560 [I
8: 53532 11244232 [B
9: 284 10507216 [J
10: 137608 7210664 <symbolKlass>
11: 203072 6498304 java.lang.String
12: 10132 5219512 <methodDataKlass>
13: 39694 4128176 java.lang.Class
14: 55713 3792816 [S
15: 61816 3141936 [[I
16: 90109 2883488 java.util.HashMap$Entry