jvm调优相关

/ 0评 / 0

获取dump文件

1、获取head dump文件

heap dump文件是一个二进制文件,它保存了某一时刻JVM堆中对象使用情况。

获取dump文件命令如下:

jmap -dump:format=b,file=<file> <PID>
# 例如
jmap -dump:format=b,file=heap.hprof 2576
# 如果只需要导出存活的对象
jmap -dump:live,format=b,file=heapLive.hprof 2576

2、获取thread dump文件

thread dump文件主要保存的是java应用中各线程在某一时刻的运行的位置,即执行到哪一个类的哪一个方法哪一个行上。

获取thread dump命令如下:

jstack <PID> > <file>
# 例如
jstack 2576 > thread.txt

分析dump文件

1、使用jdk自带的工具

jhat是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言。

分析dump文件命令如下:

jhat -port <port>
# 例如
jhat -port 9010 heapLive.hprof

或者

使用jvisualvm.exe界面打开

2、使用eclipse MAT工具

一般来说,应用程序的dump文件都是很大的,jdk自带命令难以分析这些大文件。在实际的生产环境下,我们必须要借助第三方工具,才能快速打开这些大文件,进行分析定位。
eclipse memory analyzer是一款优秀的heap分析工具,能够帮我们快速定位内存泄露问题。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注