我有一个JVM,总内存为12 GB,其中7 GB分配给老一代。 似乎有一些内存泄漏,因为几乎整个旧代都已满,并且在我安排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