目录
jmap的使用以及内存溢出分析
查看内存使用情况
查看tomcat的内存使用情况:jmap -heap tomcat进程ID
①查看堆内存配置信息:
②查看堆内存使用情况:
查看内存中对象数量及大小
使用 jmap -histo 进程ID | more 查看对象数量及大小。在Linux系统中,可以使用管道 | more来一段一段地输出信息。Windows系统也可以使用。
使用 jmap -histo:live 进程ID | more 可以查看活跃的对象数量及大小:
将内存使用情况dump到文件中
dump下来的文件是二进制格式的。
通过jhat对dump文件进行分析
将jvm的内存dump到文件中,这个文件是一个二进制的文件,不方便查看,这时我们可以借助jhat工具进行查看:
通过浏览器访问9999端口就可以访问到dump下来的文件信息了:
页面的最下方提供OQL查询链接:
查询链接 http://xxx:9999/oql/
OQL查询语句示例(可以通过OQL Help来查看一些语句示例):
如查询长度>=100 的字符串有哪些:
select s from java.lang.String s where s.value.length >= 100
可以看到长度大于1000的字符串是一些配置文件如web.xml之类的:
说明配置文件是以一个字符串的形式加载到内存中的。
通过MAT工具对dump文件进行分析
MAT介绍
MAT下载安装
双击运行:
MAT使用步骤
使用步骤: