linux中jhat命令的简单介绍

analyzing heap dump是什么

分析堆转储

创新互联专注于企业全网整合营销推广、网站重做改版、定海网站定制设计、自适应品牌网站建设、H5建站商城网站建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为定海等各大城市提供网站开发制作服务。

拓展:一、虚拟机堆转储快照分析工具(jhat)的概述

jhat(JVM Head Analysis Tool)命令与jmap搭配使用,来分析Jmap生成的堆转储快照。

jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可以在浏览器中查看。

二、实际工作中一般不直接使用jhat命令分析dump文件原因

一般不会在部署应用程序的服务器上直接分析dump文件,即使可以这样做,也会尽量将dump文件复制到其他机器上进行分析,因为分析工作时一个耗时而且消耗硬件资源的过程。

jhat的分析功能相对来说比较简陋。

三、使用jhat分析dump文件示

昭通java培训学校告诉你java内存诊断软件?

对于每一个java进程来说都有自己的内存池和使用空间,而这也就意味着会出现内存使用错误等问题,而这时候我们就需要对java内存进行诊断分析,今天昭通java培训就一起来了就一下,在进行内存诊断上都有哪些软件可以使用。

Java堆:分析诊断数据

堆转储分析

堆转储可以使用如下的工具进行分析:

EclipseMAT(内存分析工具,MemoryAnalyzerTool)是一个社区开发的分析堆转储的工具。它提供了一些很棒的特性,包括:

可疑的泄漏点:它能探测堆转储中可疑的泄露点,报告持续占有大量内存的对象;

直方图:列出每个类的对象数量、浅大小(shallow)以及这些对象所持有的堆。直方图中的对象可以很容易地使用正则表达式进行排序和过滤。这样有助于放大并集中我们怀疑存在泄露的对象。它还能够对比两个堆转储的直方图,展示每个类在实例数量方面的差异。这样能够帮助我们查找Java堆中增长快的对象,并进一步探查确定在堆中持有这些对象的根;

不可达的对象:MAT有一个非常棒的功能,那就是它允许在它的工作集对象中包含或排除不可达/死对象。如果你不想查看不可达的对象,也就是那些会在下一次GC周期中收集掉的对象,只关心可达的对象,那么这个特性是非常便利的;

重复的类:展现由多个类加载器所加载的重复的类;

到GC根的路径:能够展示到GC根(JVM本身保持存活的对象)的引用链,这些GC根负责持有堆中的对象;

OQL:我们可以使用对象查询语言(ObjectQueryLanguage)来探查堆转储中的对象。它丰富了OQL的基础设施,能够编写复杂的查询,帮助我们深入了解转储的内部。

JavaVisualVM:监控、分析和排查Java语言的一站式工具。它可以作为JDK工具的一部分来使用,也可以从GitHub上下载。它所提供的特性之一就是堆转储分析。它能够为正在监控的应用创建堆转储,也可以加载和解析它们。从堆转储中,它可以展现类的直方图、类的实例,也能查找特定实例的GC根;

jhat命令工具(在/bin文件夹中)提供了堆转储分析的功能,它能够在任意的浏览器中展现堆转储中的对象。默认情况下,Web服务器会在7000端口启动。jhat支持范围广泛的预定义查询和对象查询语言,以便于探查堆转储中的对象;

Java任务控制(JavaMissionControl)的JOverflow插件:这是一个实验性的插件,能够让Java任务控制执行简单的堆转储分析并报告哪里可能存在内存浪费;

Yourkit是一个商业的Javaprofiler,它有一个堆转储分析器,具备其他工具所提供的几乎所有特性。除此之外,YourKit还提供了:

可达性的范围(reachabilityscope):它不仅能够列出可达和不可达的对象,还能按照它们的可达性范围显示它们的分布,也就是,强可达、弱/软可达或不可达;

内存探查:YourKit内置了一组全面的查询,而不是使用ad-hoc查询功能,YourKit的查询能够探查内存,查找反模式并为常见的内存问题分析产生原因和提供解决方案。

几种常见的操作tomcat的linux命令

重启tomcat

ps x 查看pid

kill -9 pid 杀死进程

/app/tomcat/bin/startup.sh 启动tomcat

追踪日志

tail -f /app/tomcat/log/*.log

配置文件

vi /app/tomcat/webapp/root/WEB-INF/server.properties 查看服务器配置

vi /app/tomcat/webapp/root/WEB-INF/web.xml 查看后端文件位置

vi /app/tomcat/webapp/root/WEB-INF/common-applicationcontext.xml 查看数据库

查看内存溢出

top 查看系统性能

jmap -heap pid 打印heap的概要信息

jmap -histo pid 打印每个class的实例数目,内存占用,类全名信息

jmap -dump:format=b,file=heap.bin pid 输出heap信息到heap.bin文件

jhat -J-mx768m heap.bin 分析heap.bin文件

最好使用eclipse的MAT查看heap.bin,相比jhat等更加直观,容易发现内存溢出

查看死锁

jstack -l pid deadlock.jstack 输出stack信息到deadlock.jstack

vi deadlock.jstack 使用vi查看

数据库导出

/usr/local/mysql/bin/mysqldump -u root -p test test_new.sql

数据库导入

/usr/local/mysql/bin/mysql -u root -p test test_new.sql

选择性查看日志

grep * /app/tomcat/log/*.log|cut -d '#' -f 8-9|sort -t '#' -u


网站标题:linux中jhat命令的简单介绍
当前网址:http://ybzwz.com/article/higecd.html