Что именно печатает "jmap -histo pid"
Я использую команду "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".
1 ответ
Решение
Это сводка текущего содержимого кучи Java, сгруппированного по классу объекта.
#instances
общее количество объектов данного класса (как достижимых, так и недоступных) в Java Heap;#bytes
это общий мелкий размер объектов данного класса, в настоящее время находящихся в Java Heap;#bytes / #instances
будет средний размер объекта данного класса.