这个快照显示JaxbClassLoader加载了类的重复副本,这是因为应用在为每个XML进行Java类绑定的时候,不恰当地创建了新的JAXBContext实例。
jcmdjcmd <pid/classname> GC.class_stats能够提供被加载类的更详细信息,借助它,我们能够看到Metaspace每个类所占据的空间,如下面的示例输出所示。
jcmd 2752 GC.class_stats 2752:
Index Super InstBytes KlassBytes annotations CpAll MethodCount Bytecodes MethodAll ROAll RWAll Total ClassName
1 357 821632 536 0 352 2 13 616 184 1448 1632 java.lang.ref.WeakReference
2 -1 295272 480 0 0 0 0 0 24 584 608 [Ljava.lang.Object;
3 -1 214552 480 0 0 0 0 0 24 584 608 [C
4 -1 120400 480 0 0 0 0 0 24 584 608 [B
5 35 78912 624 0 8712 94 4623 26032 12136 24312 36448 java.lang.String
6 35 67112 648 0 19384 130 4973 25536 16552 30792 47344 java.lang.Class
7 9 24680 560 0 384 1 10 496 232 1432 1664 java.util.LinkedHashMap$Entry
8 -1 13216 480 0 0 0 0 0 48 584 632 [Ljava.lang.String;
9 35 12032 560 0 1296 7 149 1520 880 2808 3688 java.util.HashMap$Node
10 -1 8416 480 0 0 0 0 0 32 584 616 [Ljava.util.HashMap$Node;
11 -1 6512 480 0 0 0 0 0 24 584 608 [I
12 358 5688 720 0 5816 44 1696 8808 5920 10136 16056 java.lang.reflect.Field
13 319 4096 568 0 4464 55 3260 11496 7696 9664 17360 java.lang.Integer
14 357 3840 536 0 584 3 56 496 344 1448 1792 java.lang.ref.SoftReference
15 35 3840 584 0 1424 8 240 1432 1048 2712 3760 java.util.Hashtable$Entry
16 35 2632 736 368 8512 74 2015 13512 8784 15592 24376 java.lang.Thread
17 35 2496 504 0 9016 42 2766 9392 6984 12736 19720 java.net.URL
18 35 2368 568 0 1344 8 223 1408 1024 2616 3640 java.util.concurrent.ConcurrentHashMap$Node
…<snip>…
577 35 0 544 0 1736 3 136 616 640 2504 3144 sun.util.locale.provider.SPILocaleProviderAdapter$1
578 35 0 496 0 2736 8 482 1688 1328 3848 5176 sun.util.locale.provider.TimeZoneNameUtility
579 35 0 528 0 776 3 35 472 424 1608 2032 sun.util.resources.LocaleData$1
580 442 0 608 0 1704 10 290 1808 1176 3176 4352 sun.util.resources.OpenListResourceBundle
581 580 0 608 0 760 5 70 792 464 1848 2312 sun.util.resources.TimeZoneNamesBundle
1724488 357208 1536 1117792 7754 311937 1527952 1014880 2181776 3196656 Total
53.9% 11.2% 0.0% 35.0% - 9.8% 47.8% 31.7% 68.3% 100.0%
Index Super InstBytes KlassBytes annotations CpAll MethodCount Bytecodes MethodAll ROAll RWAll Total ClassName