JVM 调优实战--jmap的使用以及内存溢出分析

目录


jmap的使用以及内存溢出分析

查看内存使用情况

查看内存中对象数量及大小

将内存使用情况dump到文件中

通过jhat对dump文件进行分析

通过MAT工具对dump文件进行分析

MAT介绍

MAT下载安装

MAT使用步骤 


jmap的使用以及内存溢出分析

查看内存使用情况

查看tomcat的内存使用情况:jmap -heap tomcat进程ID

JVM 调优实战--jmap的使用以及内存溢出分析_第1张图片

①查看堆内存配置信息:

JVM 调优实战--jmap的使用以及内存溢出分析_第2张图片

②查看堆内存使用情况:

JVM 调优实战--jmap的使用以及内存溢出分析_第3张图片

查看内存中对象数量及大小

使用 jmap -histo 进程ID | more 查看对象数量及大小。在Linux系统中,可以使用管道 | more来一段一段地输出信息。Windows系统也可以使用。

JVM 调优实战--jmap的使用以及内存溢出分析_第4张图片

JVM 调优实战--jmap的使用以及内存溢出分析_第5张图片

使用 jmap -histo:live 进程ID | more 可以查看活跃的对象数量及大小:

JVM 调优实战--jmap的使用以及内存溢出分析_第6张图片

将内存使用情况dump到文件中

JVM 调优实战--jmap的使用以及内存溢出分析_第7张图片

dump下来的文件是二进制格式的。 

JVM 调优实战--jmap的使用以及内存溢出分析_第8张图片

JVM 调优实战--jmap的使用以及内存溢出分析_第9张图片

通过jhat对dump文件进行分析

将jvm的内存dump到文件中,这个文件是一个二进制的文件,不方便查看,这时我们可以借助jhat工具进行查看:

JVM 调优实战--jmap的使用以及内存溢出分析_第10张图片

通过浏览器访问9999端口就可以访问到dump下来的文件信息了:

JVM 调优实战--jmap的使用以及内存溢出分析_第11张图片

JVM 调优实战--jmap的使用以及内存溢出分析_第12张图片

页面的最下方提供OQL查询链接:

查询链接  http://xxx:9999/oql/

JVM 调优实战--jmap的使用以及内存溢出分析_第13张图片

JVM 调优实战--jmap的使用以及内存溢出分析_第14张图片

OQL查询语句示例(可以通过OQL Help来查看一些语句示例):

JVM 调优实战--jmap的使用以及内存溢出分析_第15张图片

如查询长度>=100 的字符串有哪些:

select s from java.lang.String s where s.value.length >= 100

JVM 调优实战--jmap的使用以及内存溢出分析_第16张图片

可以看到长度大于1000的字符串是一些配置文件如web.xml之类的:

说明配置文件是以一个字符串的形式加载到内存中的。

JVM 调优实战--jmap的使用以及内存溢出分析_第17张图片

JVM 调优实战--jmap的使用以及内存溢出分析_第18张图片

通过MAT工具对dump文件进行分析

MAT介绍

JVM 调优实战--jmap的使用以及内存溢出分析_第19张图片

JVM 调优实战--jmap的使用以及内存溢出分析_第20张图片

MAT下载安装

JVM 调优实战--jmap的使用以及内存溢出分析_第21张图片

双击运行:

JVM 调优实战--jmap的使用以及内存溢出分析_第22张图片

JVM 调优实战--jmap的使用以及内存溢出分析_第23张图片

MAT使用步骤 

使用步骤:

JVM 调优实战--jmap的使用以及内存溢出分析_第24张图片

JVM 调优实战--jmap的使用以及内存溢出分析_第25张图片

JVM 调优实战--jmap的使用以及内存溢出分析_第26张图片

JVM 调优实战--jmap的使用以及内存溢出分析_第27张图片

JVM 调优实战--jmap的使用以及内存溢出分析_第28张图片

JVM 调优实战--jmap的使用以及内存溢出分析_第29张图片

你可能感兴趣的:(JVM调优)