Java内存文件分析
- Thread dump 主要记录JVM在某一时刻各个线程执行的情况,以栈的形式显示,是一个文本文件。通过对thread dump文件可以分析出程序的问题出现在什么地方,从而定位具体的代码然后进行修正。thread dump需要结合占用系统资源的线程id进行分析才有意义。
- Heap dump
1、jps (JVM Process Status Tool)位于jdk的bin目录下,其作用是显示当前系统的java进程情况及其id号,它查找所有的Java应用程序
2、jmap (Memory Map for Java)命令用于生成堆转储快照(一般称为 Heapdump
3、jhat (JVM Heap Analysis Tool)命令与jmap搭配使用,来分析 Heapdump
4、jstat (JVM Statistics Monitoring Tool)是用于监控 虚拟机各种运行状态
5、jinfo (Configuration Info for Java)的作用是实时地 查看和调整虚拟机各项参数
6、 jstack (Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为 Threaddump 或者 javacore
7、JConsole (Java Monitoring and Management Console)是一种基于JMX的可视化监视、管理工具
8、VisualVM (All-in-One Java Troubleshooting Tool)是到目前为止随JDK发布的功能最强大的 运行监视
JDK工具使用示例:
- jps 查看当前运行的Java进程
- jmap 工具生成 Heap dump文件 jmap -dump:format=b,file=heapdump.phrof pid
- jhat 分析 Heap dump文件 jhat .\heapdump.phrof 或使用 jvisualvm分析dump文件
- http://localhost:7000/ 查看堆文件分析结果
JDK工具使用示例:
- jstack 39268 > ./threaddump 导出threaddump文本文件
- 分析实例 (死锁/线程长时间停顿/死循环等)