jdk堆、栈的分析工具--jmap、jstack
2018-01-09 00:00
169 查看
jmap(Java Memory Map):java内存映像工具
jhat(java Heap Analysis Tool):java堆(快照)分析工具
jstack(Java Stack Trace):java堆栈跟踪工具
说明:生成堆快照(堆快照被称为heap dump)、查询java堆、永久代的详细信息、查询finalize执行队列(F-Queue)。 格式:jmap [option] PID Options: -dump[:子参数] 生成java堆的快照。eg:jmap -dump:live,format=b,file=heapDump.bin live dump only live objects; if not specified, all objects in the heap are dumped. format=b binary format file=fileName -heap 显示java堆的详细信息。 -histo[:子参数] 统计java堆中的对象信息,子参数只有一个live(作用同-dump的字参数live)。 -finalizerinfo 显示在F-Queue中等待 Finalizer线程 执行finalize方法的对象。 -permstat 显示永久代的状态。 -F Use with -dump or -histo to force a heap dump or histogram when pid does not respond. The "live" suboption is not supported in this mode. 应用: 1)查看java堆的详细信息。 2)如果有大量的对象被长期引用,则很可能产生了内存泄露,那么就需要就要结合代码,找到引起内存泄露的代码并进行优化。
jhat(java Heap Analysis Tool):java堆(快照)分析工具
说明: 1)jhat通常与jmap一起使用,使用jhat来分析jmap生成的堆快照。 2)jhat内置了一个微型的HTTP/HTML服务器,使用jhat对heap dump进行分析后,可以在浏览器中查看分析的结果,查看地址:http://localhost:7000/ 3)我们一般会使用一些更加高级的工具(eg:VisualVM、Eclipse Memory Analyzer)来分析heap dump,而不是使用jhat来分析heap dump。 格式:jhat /data/test/heapDump.bin
jstack(Java Stack Trace):java堆栈跟踪工具
说明:生成虚拟机当前时刻的线程快照(线程快照被称为thread dump或javacore文件) 格式:jstack [option] PID Options: -F to force a thread dump. Use when jstack <pid> does not respond (process is hung) -m to print both java and native frames (mixed mode) -l long listing. Prints additional information about locks -h or -help to print this help message 应用:排查线程出现长时间停顿的原因 1)线程出现长时间停顿的常见场景: 1>死循环 2>线程间发生了死锁 3>请求外部资源导致的长时间等待 2)常用命令: 1>转储堆栈信息:jstack PID > /data/test/threadDumpFile 2>统计所有的线程分别处于什么状态:jstack PID | grep java.lang.Thread.State | awk '{print $2$3$4$5}' | sort | uniq -c 注意: 1)dump出来的线程ID(nid的值就是线程ID)是十六进制的,而我们用TOP命令看到的线程ID是十进制的。 注:使用printf命令将十进制的ID转换为十六进制的ID:printf "%x\n" 十进制的ID 2)用十六进制的ID去dump里找到对应的线程。
相关文章推荐
- jdk堆、栈的分析工具--jmap、jstack
- jdk堆、栈的分析工具--jmap、jstack
- Java 工具(jmap,jstack)在linux上的源码分析(二)信号处理
- Java 工具(jmap,jstack)在linux上的源码分析(三)执行的线程vm thread
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解 - 实例分析
- Java 工具(jmap,jstack)在linux上的源码分析(三)执行的线程vm thread
- Java 工具(jmap,jstack)在linux上的源码分析(六) -F 参数 读取动态链接共享库文件中的符号表
- Java 工具(jmap,jstack)在linux上的源码分析(四)safe point
- Java 工具(jmap,jstack)在linux上的源码分析(四)safe point
- Java 工具(jmap,jstack)在linux上的源码分析(六) -F 参数 如何读取线程列表
- VM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解 - 实例分析
- JVM三(2):jmap、jstack、jstat 等jvm分析工具
- Java 工具(jmap,jstack)在linux上的源码分析(五) -F 参数的bug
- Java 工具(jmap,jstack)在linux上的源码分析(二)信号处理
- Java 工具(jmap,jstack)在linux上的源码分析(一)
- JVM常用分析工具JPS/JINFO/JSTACK/JSTAT/JMAP详解
- Java 工具(jmap,jstack)在linux上的源码分析(一)
- JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)
- Java线程Dump分析工具--jstack
- JVM监控工具:jps、jstat、jinfo、jmap、jhat、jstack使用介绍