听完公司《JVM应用调试相关脚本》的分享之后,又有同事在邮件里分享了另外一个可以生成html的分析工具叫:jhat (虚拟机堆转快照分析工具)。纯技术的东西,没有啥保密的,我就直接贴过来了,下面是邮件原文,图片弄过来比较麻烦,就暂缺吧。
引用
Sun JDK提供的这个jhat(JVM Heap Analysis Tool)命令需要与jmap搭配使用。先dump出来快照,然后再用jhat来分析。
dump_hai.li.bin是我之前dump出来的一个快照。(怎么dump玥老已经讲过了,不赘述)执行命令:jhat D:\dump_hai.li.bin
【缺图】
分析结果:(Jhat内部了一个微型的HTTP/HTML服务器,可以将dump文件分析之后生成html文档,可以在浏览器中查看。。)
【缺图】
如上图:分析结果默认是以包为单位进行分组的,分析内存泄漏问题主要会用到其中的“Heap Histogram”与OQL(Object Query Language)页标签的功能。
前者可以找到内存中最大对象,如图:
【缺图】
后者是标准的对象查询语言,类似SQL的语法对内存中的对象进行查询统计,如图:(旁边的“OQL Help”可以查看相应的查询语法)
【缺图】
但是:这个也就平时自己玩儿的时候用用,在生产环境就不太靠谱儿(主要原因:1-一般生产环境是不建议在部署了应用的服务器上分析,就算如玥老说说的先将服务器摘下来,也不推荐,毕竟是生产使用的环境,而且线上dump的文件通常很大,jhat分析起来效率并不怎么好,而且还很消耗资源;2-另外就是jhat的分析功能相对简陋,做一些基本的分析或者自己学习可以玩玩儿。我想说的是玥老分享的命令行可以更好的按需要定位问题),除非是真的没有其他别的分析工具了。
好吧,分析工具嘛,除了玥老介绍的命令行、Mat1.2.0和JDK自带工具外,还有些专业的产品,如:Eclipse Memory Analyzer、IBM HeapAnalyzzer等。有兴趣的童鞋可以研究研究,当然了,研究之后就是相互交流分享^^(好的预期是能形成一套属于Qunar的jvm解决方案)
Ok,到此为止吧,应玥老分享会上的提醒,偶来回个邮件,分享下玩儿jvm的一点儿经验,欢迎拍砖,前提是你先帮我一起纠正错误的地方,哈哈。
分享到:
相关推荐
- 第4章 虚拟机性能监控、故障处理工具- 4.2 基础故障处理工具JDK提供jhat(JVM Heap Analysis Tool)命令与jmap搭配使用,来
4. 查看分析结果:使用 jhat 工具分析堆dump文件后,可以在浏览器中访问 http://localhost:7000 查看分析结果,包括内存泄漏的原因和解决方案。 jhat 的高级使用方法 1. 比较两个堆dump文件:使用 jhat 的 -...
本篇文章将深入探讨Java虚拟机的内存模型、栈空间以及相关的分析工具。 首先,我们来了解Java的内存模型。Java内存主要分为堆(Heap)、栈(Stack)、方法区(Method Area)、程序计数器(PC Register)和本地方法...
jhat 主要用来分析堆dump文件。语法格式如下:jhat [options] [dumpfile]。指令行参数选项解释如下: * -J options 传递给 JVM 的参数 * -port 端口号 例如:jhat -port 9999 dump.dat 五、jstat jstat 主要用来...
虽然jhat功能强大,但由于现代内存分析工具有更多高级功能,jhat在某些情况下可能已被替代。 6. **jstack(Stack Trace for Java)**: jstack用于打印Java线程的堆栈跟踪信息,这对于诊断线程阻塞和死锁问题非常...
4.2.5 jhat:虚拟机堆转储快照分析工具 4.2.6 jstack:Java堆栈跟踪工具 4.2.7 HSDIS:JIT生成代码反汇编 4.3 JDK的可视化工具 4.3.1 JConsole:Java监视与管理控制台 4.3.2 VisualVM:多合一故障处理工具 4.4...
例如,使用 `jmap -dump:live,format=b,file=<filename> <pid>` 可以生成堆的快照文件,方便后续使用内存分析工具(如MAT、JVisualVM等)进行分析。 ### JSTACK JSTACK用于生成当前JVM中所有线程的堆栈跟踪,这对于...
4. jhat:分析堆内存快照,查找内存泄漏。 5. jstack:打印线程堆栈信息,帮助定位死锁或阻塞问题。 六、实战应用 通过上述理论知识,我们可以有效地解决Java应用的性能瓶颈,如内存溢出、CPU过高、线程死锁等问题...
Java虚拟机工具,如"visualvm_136",是开发者用于深入了解和优化Java应用性能的重要辅助工具。 VisualVM是一个强大的多合一JVM监控和分析工具,它由Oracle公司开发并随Java SDK一同提供。VisualVM提供了丰富的功能...
`jmap`是一个内存映射工具,它可以生成堆内存的快照(heapdump文件),这对于分析内存泄漏或过度分配问题非常有帮助。此外,`jmap`还可以用来获取堆内存的详细信息,比如堆的大小、分配情况等。 `jhat`是JVM堆转储...
jhat:虚拟机堆转储快照分析工具 - **功能**:`jhat` 提供了一个HTTP服务器来浏览Java堆的转储文件,帮助用户查找内存泄漏等问题。 - **使用方法**:`jhat <heapdumpfile>` 或 `jhat -J<options> <heapdumpfile>`。...
JDK自带了一系列强大的诊断工具,如jps(Java进程查看器)、jstat(统计信息工具)、jinfo(配置信息工具)、jmap(内存映射工具)、jhat(堆转储分析工具)和jstack(线程堆栈跟踪工具)。熟练掌握这些工具的使用,...
MAT 是一个开源的java内存分析工具,能够快速的分析dump文件,可以直观的看到各个对象在内存占用的量...比传统的JDK分析工具jstat和jmap和Jhat更易用,更快速 适用于 java学习者,程序开发者调试java程序,分析BUG使用
3. jhat:分析堆转储文件,找出内存泄漏。 4. jstack:打印线程堆栈信息,用于排查死锁等问题。 5. VisualVM:集成多种JVM监控功能的可视化工具。 六、JVM内存模型与线程 1. 线程共享与局部变量:堆和方法区是所有...
例如,使用JStack查看线程堆栈信息,JMap分析内存分配,Jhat进行堆转储分析等。 8. 其他高级特性:JVM还涉及模块系统、反射、动态类型语言支持、并行与并发特性等。这些特性使得Java平台具有强大的扩展性和灵活性。...
堆栈快照排查是指通过各种命令和工具来排查堆栈快照问题。常用的命令包括jmap、jhat等。这些命令可以用来查看当前的堆栈快照信息、内存使用情况等信息。 例如,使用jmap命令可以查看当前的堆栈快照信息: ``` jmap...
MAT是Memory Analyzer Tool的缩写,用于分析堆dump。MAT可以对堆dump进行详细的分析,并提供了多种视图来帮助开发人员理解堆的结构。 MAT的优点是需要的额外内存比jhat要小的多,因此在分析大型堆dump时建议使用MAT...
12. **JVM诊断工具**:如jconsole、jvisualvm、jmap、jhat等,它们提供了监控和分析JVM状态、内存使用情况、线程状态等功能,是排查问题和调优的重要工具。 通过学习《深入JAVA虚拟机第二版》,开发者可以提升对JVM...