我正在使用命令“jmap -histo pid”,想知道它究竟告诉了我什么。
输出类似于:
num #instances #bytes class name
----------------------------------------------
1: 2284437 262114728 [C
2: 686409 124390432 [B
3: 363878 46799288 <constMethodKlass>
4: 363878 46590464 <methodKlass>
5: 1817209 43613016 java.lang.String
6: 34590 37296528 <constantPoolKlass>
7: 296302 36673344 [I
8: 34585 33237656 <instanceKlassKlass>
9: 248731 21559504 [Ljava.lang.Object;
10: 28200 19991872 <constantPoolCacheKlass>
11: 563323 13519752 scala.collection.immutable.$colon$colon
12: 26813 13103488 <methodDataKlass>
13: 506968 12167232 scala.collection.immutable.HashSet$HashSet1
14: 200750 10371320 [Lscala.collection.immutable.HashSet;
15: 114268 9477096 [Lscala.collection.immutable.HashMap;
16: 92405 7392400 java.lang.reflect.Method
17: 200953 6430496 scala.collection.immutable.HashMap$HashMap1
通过示例:什么是“字节”正好显示?
也许有人可以向我解释什么是“#instances”。
答案 0 :(得分:1)
这是按对象类分组的当前Java堆内容的摘要。
#instances
是Java堆中给定类(可达和不可达)的对象总数; #bytes
是当前驻留在Java堆中的给定类的对象的总浅层大小; #bytes / #instances
将是给定类的对象的平均大小。