Java内存文件分析



 



  • Thread dump 主要记录JVM在某一时刻各个线程执行的情况,以栈的形式显示,是一个文本文件。通过对thread dump文件可以分析出程序的问题出现在什么地方,从而定位具体的代码然后进行修正。thread dump需要结合占用系统资源的线程id进行分析才有意义。
  • Heap dump

 



1、jps (JVM Process Status Tool)位于jdk的bin目录下,其作用是显示当前系统的java进程情况及其id号,它查找所有的Java应用程序




java jmap 分析dump jdk分析dump_jdk


 


2、jmap (Memory Map for Java)命令用于生成堆转储快照(一般称为 Heapdump


java jmap 分析dump jdk分析dump_java jmap 分析dump_02


java jmap 分析dump jdk分析dump_jdk_03


 


3、jhat (JVM Heap Analysis Tool)命令与jmap搭配使用,来分析 Heapdump


java jmap 分析dump jdk分析dump_jvm_04


java jmap 分析dump jdk分析dump_jvm_05


 


4、jstat (JVM Statistics Monitoring Tool)是用于监控 虚拟机各种运行状态


java jmap 分析dump jdk分析dump_java jmap 分析dump_06


 


5、jinfo (Configuration Info for Java)的作用是实时地 查看和调整虚拟机各项参数


java jmap 分析dump jdk分析dump_java_07


 


6、 jstack (Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为 Threaddump 或者 javacore

 

java jmap 分析dump jdk分析dump_Java_08


java jmap 分析dump jdk分析dump_Java_09


 


7、JConsole (Java Monitoring and Management Console)是一种基于JMX的可视化监视、管理工具


java jmap 分析dump jdk分析dump_jdk_10


 


 


8、VisualVM (All-in-One Java Troubleshooting Tool)是到目前为止随JDK发布的功能最强大的 运行监视


java jmap 分析dump jdk分析dump_java jmap 分析dump_11


 


JDK工具使用示例:


  1. jps 查看当前运行的Java进程 
  2. jmap 工具生成 Heap dump文件   jmap -dump:format=b,file=heapdump.phrof pid
  3. jhat 分析 Heap dump文件   jhat .\heapdump.phrof  或使用 jvisualvm分析dump文件
  4. http://localhost:7000/ 查看堆文件分析结果

 


JDK工具使用示例:


  1. jstack 39268 > ./threaddump  导出threaddump文本文件
  2. 分析实例 (死锁/线程长时间停顿/死循环等)