栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 堆内存分析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 堆内存分析

Java 堆内存工具jmap 打印当前 Java 堆内存信息
jmap -histo[:live] 
# 打印当前进程中类实例信息
导出Java 堆内存到文件
jmap -dump:live,format=b,file=heap.bin 
# live 是否只打印存活对象,如果不指定,则会打印全部对象
# file 指定导出的文件路径,包含文件名称
#  指定 java 进程id
jmap -dump:live,format=b,file=heap.hprof 2848
Java 堆内存分析工具jhat

通过 jhat 命令我们可以建立一个服务器用于分析指定的堆内存文件

jhat [-port ] -J 
# jhat 指定要分析的堆内存文件
jhat -port 7000 -JXmx=1g heap.hprof
# -port 用于指定端口号,默认 7000
# -JXmx=1g 用于指定启动的Java服务,注意这里要大于dump的堆内存文件
# heap.hprof dump 出的堆内存文件


Java 对内存分析语言 OQL

我们可以通过 OQL对象分析语言来对内存进行分析操作.

OQL 语言的标准格式是这样的:

select 
         [ from [instanceof]  
         [ where  ] ]
-- 获取堆内存中全部字符串
-- 注意 select,from 等关键字要用小写
select x.value.toString() from java.lang.String x
-- 正则表达式查起来会很慢,最好不要用
select x.value.toString() from java.lang.String x
where /[d.]+/.test(x.value.toString())
使用 & 进行多条件查询
-- 查询字符串长度大于20且包含 Excepton 的字符串
-- select 展示多个值要用数组的方式拼接
select [s.value.toString(),s] 
from java.lang.String s 
where s.value.length>20 & /Exception/.test(s.value.toString())

参考资料

分析大文件Java堆内存快照
分析大文件Java堆内存快照
白灰——软件测试
JVM 对象查询语言(OQL)
Object Query Language (OQL)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/322732.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号