使用jmap查看堆和对象的信息
来源:互联网 发布:网络机顶盒好看的软件 编辑:程序博客网 时间:2024/06/02 04:32
jmap概述
jmap工具提供了一系列有用的选项来查看堆的使用情况和新生代、老年代中对象的情况。
通过制定 -heap选项和运行java应用的jvm进程的pid(获取java应用的pid,可以使用
jps工具。),就能输出响应进程的新生代和老年代的情况。
使用jmap输出堆的信息
C:\Users\JavaMaster>jmap -heap 14584jmap -heap 14584Attaching to process ID 14584, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.112-b15using thread-local object allocation.Parallel GC with 4 thread(s)Heap Configuration: MinHeapFreeRatio = 0 MaxHeapFreeRatio = 100 MaxHeapSize = 2644508672 (2522.0MB) NewSize = 55050240 (52.5MB) MaxNewSize = 881328128 (840.5MB) OldSize = 110624768 (105.5MB) NewRatio = 2 SurvivorRatio = 8 MetaspaceSize = 21807104 (20.796875MB) CompressedClassSpaceSize = 1073741824 (1024.0MB) MaxMetaspaceSize = 17592186044415 MB G1HeapRegionSize = 0 (0.0MB)Heap Usage:PS Young GenerationEden Space: capacity = 418906112 (399.5MB) used = 221504400 (211.24305725097656MB) free = 197401712 (188.25694274902344MB) 52.876860388229424% usedFrom Space: capacity = 524288 (0.5MB) used = 0 (0.0MB) free = 524288 (0.5MB) 0.0% usedTo Space: capacity = 8912896 (8.5MB) used = 0 (0.0MB) free = 8912896 (8.5MB) 0.0% usedPS Old Generation capacity = 112197632 (107.0MB) used = 19927224 (19.00408172607422MB) free = 92270408 (87.99591827392578MB) 17.76082404306002% used21104 interned Strings occupying 2539648 bytes.
输出的主要信息:
* 堆的最小容量,最大容量
* eden区与survivor区的比值
* eden区的容量,使用的大小,未使用的区域的大小,使用的区域的比例
* 两个survivor区的容量,使用的大小,未使用的区域的大小,使用的区域的比例
* 老年代的容量,使用的大小,未使用的区域的大小,使用的区域的比例
使用jmap输出对象信息
C:\Users\JavaMaster>jmap -histo 14584 num #instances #bytes class name---------------------------------------------- 1: 1664214 51285312 [Ljava.lang.Object; 2: 33534 37954152 [I 3: 318400 35074672 [C 4: 723026 28921040 java.util.TreeMap$Entry 5: 704904 22556928 java.io.ObjectStreamClass$WeakClassKey 6: 55489 11788280 [B 7: 220526 5292624 java.lang.Long 8: 163309 3919416 java.lang.String 9: 81638 3918624 java.util.TreeMap 10: 98050 3137600 java.util.TreeMap$KeyIterator 11: 31114 2986944 java.lang.management.ThreadInfo 12: 88277 2118648 java.io.SerialCallbackContext 13: 80792 1939008 javax.management.openmbean.CompositeDataSupport 14: 93970 1868624 [Ljavax.management.openmbean.CompositeData; 15: 16715 1738360 java.io.ObjectStreamClass 16: 92098 1473568 java.lang.Boolean 17: 58928 1414272 java.lang.StringBuilder 18: 81599 1305584 java.util.TreeMap$KeySet 19: 79467 1271472 java.util.TreeMap$EntrySet 20: 23527 1129296 java.util.HashMap 21: 29858 955456 java.lang.StackTraceElement 22: 7805 886672 java.lang.Class 23: 26892 860544 java.util.HashMap$Node 24: 51123 817968 java.lang.Integer 25: 9149 805112 java.lang.reflect.Method 26: 10889 748992 [Ljava.util.HashMap$Node; 27: 31117 736736 [Ljava.lang.StackTraceElement; 28: 16713 668520 java.util.HashMap$KeyIterator 29: 15965 609712 [Ljava.lang.String; 30: 16824 538368 java.util.concurrent.ConcurrentHashMap$Node 31: 1361 530584 [J 32: 7954 445424 java.util.concurrent.ConcurrentHashMap$KeyIterator 33: 18468 443232 java.lang.management.LockInfo 34: 9846 339240 [Ljavax.management.ObjectName$Property; 35: 8391 335640 java.io.ObjectStreamClass$FieldReflectorKey 36: 10407 333024 java.io.DataOutputStream 37: 5084 314944 [Ljava.io.ObjectInputStream$HandleTable$HandleList;
可以加给-histo加上live选项,只输出存活的对象
jmap -histo:live pid
输出的信息中带方括号的符号是java类型在jvm的表示式:
[C 等价于 char[]
[S 等价于 short[]
[I 等价于 int[]
[B 等价于 byte[]
[[I 等价于 int[][]
上面的输出中[C对象占用Heap这么多,往往跟String有关,String其内部使用
final char[]数组来保存数据的。
constMethodKlass/ methodKlass/ constantPoolKlass/ constantPoolCacheKlass/ instanceKlassKlass/ methodDataKlass
与Classloader相关,常驻与Perm区。
阅读全文
0 0
- 使用jmap查看堆和对象的信息
- Linux jmap查看Java程序堆内存的使用情况
- 用jmap和jps查看对象数量
- jps,jstat,jinfo,jmap,jhat,jstack工具的使用/查看Linux磁盘信息
- 使用jmap和MAT分析JVM堆内存
- 使用jmap和MAT分析JVM堆内存
- jmap 查看内存使用直方图
- jmap 查看内存使用直方图
- Windows中使用jmap命令查看占用内存的情况
- jmap和jhat查看java启用的http端口
- jmap和jstack使用
- jmap 输出内存中对象 的工具使用
- jmap命令的使用
- Jmap的使用
- JMAP的使用
- Jmap命令查看内存使用情况
- 性能分析4~jmap命令分析:堆信息、内存溢出
- jmap, jhat, jvisualvm:java堆内存对象分析利器
- Android .9图制作
- tensorflow编程: Variables
- 工作感悟(写于2015-09-19)
- LintCode-452.Remove Linked List Elements
- filter过滤器在项目中如何使用
- 使用jmap查看堆和对象的信息
- 2017年的国庆
- 【算法】无序数组中求中位数
- Poj 3592 Instantaneous Transference
- 应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行 sxstrace.exe 工具
- python3 批量编码格式转换
- Windows下编译FFmpeg-2.6.1详解
- dbcp,c3p0,druid数据库连接池的浅析
- 数据类型使用错误