jhat命令的html页面,jvm 指令工具 jhat 命令(Java堆分析工具)
jhat 简介
jhat 全称:Java Heap Analyse Tool(Java堆分析工具),jhat 也是 jdk 内置的工具之一。
功能:主要是用来分析java堆的命令,可以将堆中的对象以 html 的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言(OQL)。
jhat命令➜ jhat -h
Usage: jhat [-stack ] [-refs ] [-port ] [-baseline ] [-debug ] [-version] [-h|-help]
-J Pass directly to the runtime system. For
example, -J-mx512m to use a maximum heap size of 512MB
-stack false: Turn off tracking object allocation call stack.
-refs false: Turn off tracking of references to objects
-port : Set the port for the HTTP server. Defaults to 7000
-exclude : Specify a file that lists data members that should
be excluded from the reachableFrom query.
-baseline : Specify a baseline object dump. Objects in
both heap dumps with the same ID and same class will
be marked as not being "new".
-debug : Set debug level.
0: No debug output
1: Debug hprof file parsing
2: Debug hprof file parsing, no server
-version Report version number
-h|-help Print this help and exit
The file to read
For a dump file that contains multiple heap dumps,
you may specify which dump in the file
by appending "#" to the file name, i.e. "foo.hprof#3".
All boolean options default to "true"
-stack false|true
关闭对象分配调用栈跟踪(tracking object allocation call stack)。
如果分配位置信息在堆转储中不可用,则必须将此标志设置为 false,默认值为 true.
-refs false|true
关闭对象引用跟踪(tracking of references to objects)。
默认值为 true,默认情况下,返回的指针是指向其他特定对象的对象,如反向链接或输入引用(referrers or incoming references),会统计/计算堆中的所有对象。
-port port-number
设置 jhat HTTP server 的端口号,默认值 7000.
-exclude exclude-file
指定对象查询时需要排除的数据成员列表文件(a file that lists data members that should be excluded from the reachable objects query)。 例如,如果文件列列出了 java.lang.String.value,那么当从某个特定对象 Object o 计算可达的对象列表时,引用路径涉及 java.lang.String.value 的都会被排除。
-baseline exclude-file
指定一个基准堆转储(baseline heap dump)。 在两个 heap dumps 中有相同 object ID 的对象会被标记为不是新的(marked as not being new),其他对象被标记为新的(new),在比较两个不同的堆转储时很有用。
-debug int
设置 debug 级别,0 表示不输出调试信息。 值越大则表示输出更详细的 debug 信息.
-version
启动后只显示版本信息就退出
-J< flag >
因为 jhat 命令实际上会启动一个JVM来执行,通过 -J 可以在启动JVM时传入一些启动参数。
例如 -J-Xmx512m 则指定运行 jhat 的Java虚拟机使用的最大堆内存为 512 MB,如果需要使用多个JVM启动参数,则传入多个 -Jxxxxxx.
jhat使用
使用jmap可以生成Java堆的Dump文件。生成dump文件之后就可以用jhat命令,将dump文件转成html的形式,然后通过http访问可以查看堆情况。
jhat命令解析会Java堆dump并启动一个web服务器,然后就可以在浏览器中查看堆的dump文件了。
步骤1:jmap 导出文件
除了使用jmap命令,还可以通过以下方式:使用 jconsole 选项通过 HotSpotDiagnosticMXBean 从运行时获得堆转储(生成dump文件)、
虚拟机启动时如果指定了 -XX:+HeapDumpOnOutOfMemoryError 选项, 则在抛出 OutOfMemoryError 时, 会自动执行堆转储。
使用 hprof 命令jmap -dump:live,file=demo.hprof
步骤2:jhat 分析文件➜ jhat demo.hprof
Reading from demo.hprof...
Dump file created Thu Aug 01 13:15:47 CST 2019
Snapshot read, resolving...
Resolving 2289831 objects...
Chasing references, expect 457 dots.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Eliminating duplicate references.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
有时你dump出来的堆很大,在启动时会报堆空间不足的错误,可以使用如下参数:jhat -J-Xmx512m
jhat 在分析完成后,使用HTTP服务器展示其分析结果。访问地址为http://:7000,可以看到类似如下的内容:
内容很长,拖拽到最下面看到 Other Queries
在“Other Queries”一栏中点击不同的链接可以展示不同的内容,如点击“Show heap histogram” 链接,展示堆快照直方图~
点击“Execute Object Query Language (OQL) query”链接,可以使用OQL查询~
对象查询语言(OQL)
OQL是类似于SQL的查询语言,用于查询Java堆。OQL允许筛选/选择Java堆所需的信息。HAT已支持诸如“显示类X的所有实例”之类的预定义查询,而OQL则增加了灵活性。OQL基于JavaScript表达式语言。select [ from [instanceof]
[ where ] ]
可以点击 OQL Help 获取帮助
常用类直方图(类、实例数、总大小):http://localhost:7000/histo/
所有类实例统计:http://localhost:7000/showInstanceCounts/includePlatform/
OQL查询:http://localhost:7000/oql/
oql语法帮助:http://localhost:7000/oqlhelp/
jhat命令的html页面,jvm 指令工具 jhat 命令(Java堆分析工具)相关推荐
- JVM进阶(十二):JAVA 可视化分析工具实战
文章目录 一.前言 二.JAVA监视与管理控制台 三.拓展阅读 一.前言 经过前几篇博文对堆内存以及垃圾收集机制的学习,相信小伙伴们已经建立了一套比较完整的理论体系!本篇博文就根据已有的理论知识,通过 ...
- java heap分析工具_Java Heap dump文件分析工具jhat简介
[开发.应用中老是会遇到OutOfMemory异常,而且常常是过一段时间内存才被吃光,这里可以利用java heap dump出jvm内存镜像,然后再对其进行分析来查找问题.<java heap ...
- java dump分析工具_java性能分析与常用工具
本次源码已放在Github:https://github.com/nateshao/jvm-tuning 个人博客 https://nateshao.gitee.io http://www.nates ...
- JVM进阶(十二)——JAVA 可视化分析工具
JVM进阶(十二)--JAVA 可视化分析工具 经过前几篇博文对堆内存以及垃圾收集机制的学习,相信小伙伴们已经建立了一套比较完整的理论体系!本篇博客就根据已有的理论知识,通过可视化工具来实践一番. ...
- java dump分析工具_Java 性能分析工具 (2):Java 内置监控工具
引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...
- Java 性能分析工具一览(JDK自带)
Jdk自带的监控程序 1. jstat 分析JVM HEAP占用情况 2. jps 查看JVM 进程 3. jmap 分析内存对象占用情况 4. jstack 查看JVM 调用堆栈情况 5. hppr ...
- Java内存分析工具——jmap
Java内存分析工具--jmap 平时我们在开发Java应用的时候,会涉及到分析对象内存.内存监控,那么就涉及到jmap这个工具,学习后来介绍一下 能干嘛? jmap 一般可用于: jmap能够打印给 ...
- 超好用的自带火焰图的 Java 性能分析工具 Async-profiler 了解一下
如果你经常遇到 Java 线上性能问题束手无策,看着线上服务 CPU 飙升一筹莫展,发现内存不断泄露满脸茫然.别慌,这里有一款低开销.自带火焰图.让你大呼好用的 Java 性能分析工具 - async ...
- Java内存分析工具MAT(Memory Analyzer Tool)的介绍与使用
详细介绍了Java内存分析工具MAT(Memory Analyzer Tool)的常见使用方法,MAT可以帮助Java程序员快速进行内存分析,定位问题. MAT(Memory Analyzer Too ...
最新文章
- 使用DOM操作样式表
- bring your mac everywhere you go
- FastDFS文件上传和下载流程
- 服务器推送系统安装,搭建PXE服务器,推送安装linux系统
- 多个线程作用于同一个runnable对象
- 图论 —— 图的连通性 —— 传递闭包
- ssis 数据转换_SSIS数据类型:高级编辑器的更改与数据转换的转换
- 【Oracle】SCOPE=MEMORY|SPFILE|BOTH
- PostgreSQL的notify 与listen (三)
- java中的@Override标签
- Windows下基于IIS服务的SSL服务器的配置
- IDEA 自定义注释
- 高等数学学习笔记——第六十讲——向量值函数的导数与积分
- 为什么要用Handler
- 海南“多规合一”改革促行政审批提速城乡面貌提质
- 模块独立性与高内聚低耦合
- IP地址划分【分类:A类 B类 C类 D类 E类】
- 模拟支付宝、淘宝登录1
- 自动化 Google 以图搜图
- React 高阶组件(HOC)
热门文章
- HSV介绍二:HSV颜色识别-HSV基本颜色分量范围
- SysUtils.QuotedStr - 加单引号
- View‘s SELECT contains a subquery in the FROM clause
- PKUWC2019 赛前模拟赛总结
- php crypt 结果等于盐,php crypt函数怎么用
- 基于ssm的高校学籍管理系统
- Vivado报错[place 30-484] The packing of LUTRAM/SRL instance
- python 编译器pyc_python编译pyc和pyo
- Echarts 柱状图、饼状图等变换颜色、渐变色
- 计算机网络面试题总结(2022最新版)