使用jmap dump 分析JVM内存状态
2017-04-29 14:25
471 查看
查看整个JVM内存状态
jmap -heap [pid]要注意的是在使用CMS GC 情况下,jmap -heap的执行有可能会导致Java 进程挂起
imac:~ xdcoder$ jmap -heap 783 Attaching to process ID 783, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.101-b13 using thread-local object allocation. Parallel GC with 8 thread(s) Heap Configuration: MinHeapFreeRatio = 0 MaxHeapFreeRatio = 100 MaxHeapSize = 4294967296 (4096.0MB) NewSize = 89128960 (85.0MB) MaxNewSize = 1431306240 (1365.0MB) OldSize = 179306496 (171.0MB) NewRatio = 2 SurvivorRatio = 8 MetaspaceSize = 21807104 (20.796875MB) CompressedClassSpaceSize = 1073741824 (1024.0MB) MaxMetaspaceSize = 17592186044415 MB G1HeapRegionSize = 0 (0.0MB) Heap Usage:堆栈使用情况 PS Young Generation Eden Space: capacity = 67108864 (64.0MB) used = 19526232 (18.621665954589844MB) free = 47582632 (45.378334045410156MB) 29.09635305404663% used From Space: capacity = 11010048 (10.5MB) used = 5619728 (5.3593902587890625MB) free = 5390320 (5.1406097412109375MB) 51.04181198846726% used To Space: capacity = 11010048 (10.5MB) used = 0 (0.0MB) free = 11010048 (10.5MB) 0.0% used PS Old Generation capacity = 179306496 (171.0MB) used = 32768 (0.03125MB) free = 179273728 (170.96875MB) 0.01827485380116959% used 4904 interned Strings occupying 388552 bytes.
查看JVM堆中对象详细占用情况
jmap -histo [pid]imac:~ xdcoder$ jmap -histo 783 num #instances #bytes class name ---------------------------------------------- 1: 286511 9516456 [Ljava.lang.Object; 2: 113692 9458248 [C 3: 31510 6249248 [B 4: 132529 4240928 java.io.ObjectStreamClass$WeakClassKey 5: 95868 3834720 java.util.TreeMap$Entry 6: 14097 3740048 [I 7: 60312 1447488 java.lang.String 8: 25273 1213104 java.util.HashMap 9: 46425 1114200 java.lang.Long 10: 10056 1045824 java.io.ObjectStreamClass 11: 10429 500592 java.util.TreeMap 12: 7332 470824 [Ljava.util.Hashtable$Entry; 13: 14637 468384 java.util.Vector 14: 4609 442464 java.lang.management.ThreadInfo 15: 12704 406528 java.util.TreeMap$KeyIterator 16: 15719 377256 java.io.SerialCallbackContext 17: 7325 351600 java.util.Hashtable
导出整个JVM 中内存信息
jmap -dump:format=b,file=文件名 [pid]jhat是sun 1.6及以上版本中自带的一个用于分析JVM 堆DUMP 文件的工具,基于此工具可分析JVM HEAP 中对象的内存占用情况
jhat -J-Xmx1024M [file]
执行后等待console 中输入start HTTP server on port 7000 即可使用浏览器访问 IP:7000
eclipse Memory Analyzer
Eclipse 提供的一个用于分析JVM 堆Dump文件的插件。借助这个插件可查看对象的内存占用状况,引用关系,分析内存泄露等。
http://www.eclipse.org/mat/
终止线程活动
kill -3 [pid]在Linux 上找到Java所在的进程号,然后执行以上命令,线程的相关信息就输出到console
查看堆栈信息
jstack 是sun JDK 自带的工具,通过该工具可以看到JVM 中线程的运行状况,包括锁等待,线程是否在运行执行 jstack [pid] ,线程的所有堆栈信息,包括死锁进程。
相关文章推荐
- java内存分析(jmap和jhat使用)
- jmap查看内存使用情况与生成heapdump--转
- JVM内存分析工具使用
- jmap dump 出JVM 内存信息命令
- JVM 中的 jps、jinfo、jstat、jstack、jmap、jconsole等命令使用(线程进行分析和故障诊断)
- 使用JMAP dump及分析dump文件
- 使用JMAP dump及分析dump文件
- JVM内存状况查看方法和分析工具-jmap
- java内存溢出分析工具:jmap使用实战
- 用jmap分析jvm使用状况
- 【内存泄露排查】应用内存分析方案,采用jmap命令dump内存数据采样后,eclipse mat插件分析
- 使用redis-rdb-tools解析reids dump.rdb文件及分析内存使用量
- java内存分析(jmap和jhat使用)
- 用JDK中的 jps、jinfo、jstat、jstack、jmap、jconsole等命令对JVM,内存,线程进行分析和故障诊断
- JVM大内存分析,不推荐jmap+jhat,推荐JProfiler
- 如何分析jvm dump 内存日志
- Sun JDK自带JVM内存使用分析工具HProf
- Android使用procrank和dumpsys meminfo分析内存占用情况
- Android使用procrank和dumpsysmeminfo分析内存占用情况
- 用JDK中的 jps、jinfo、jstat、jstack、jmap、jconsole等命令对JVM,内存,线程进行分析和故障诊断