网易首页 > 网易号 > 正文 申请入驻

你不得不知的6个JDK自带JVM调优工具

0
分享至

前面已经讲过了jps和jstat调优工具。今天我们继续说一下其他4个工具。这些工具都在jdk的bin目录下。

如何使用jinfo工具

jinfo显示虚拟机配置信息,我们通过jinfo --help能看到相应的参数:

option说明

no option 输出全部的参数和系统属性
-flag name 输出对应名称的参数
-flag [+|-]name 开启或者关闭对应名称的参数
-flag name=value 设定对应名称的参数
-flags 输出全部的参数
-sysprops 输出系统属性

我们可以先使用jps找到pid。

jinfo pid会输出一堆相关信息

jinfo -flags pid

用来输出JVM的全部参数

jinfo -flag name pid

使用该命令,可以查看指定的name为 JVM参数的值。

如:查看当前 JVM进程是否开启打印·GC日志。

同样的可以使用

jinfo -flag [+|-]name pid

来开启或者关闭对应名称的参数 。

也可以使用

jinfo -sysprops pid

来输出当前 JVM进行的全部的系统属性

如何使用jmap工具

jmap(Java Memory Map) 命令,主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。jmap以生成 java程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看ClassLoader 的信息以及 finalizer 队列。

jmap命令可以获得运行中的JVM的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等。可以使用jmap生成Heap Dump。

Memory = direct memory(直接内存) +JVM memory(MaxPermSize +Xmx);

jmap --help打印辅助信息

option说明

pid:java进程id,命令ps -ef | grep java获取,或者jps工具获取
executable:产生核心dump的java可执行文件
core:需要打印配置信息的核心文件
remote-hostname-or-ip:远程调试的主机名或ip
server-id:可选的唯一id,如果相同的远程主机上运行了多台调试服务器,用此选项参数标识服务器
-dump:[live,]format=b,file=使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.
-finalizerinfo 打印正等候回收的对象的信息.
-heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况.
-histo[:live]打印每个class的实例数目,内存占用,类全名信息. JVM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.
-clstats(取代了在JDK8之前打印类加载器信息的permstat)打印classload和jvm heap长久层的信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量。

使用命名查看JVM的heap信息

jmap -heap pid

输出Java堆详细信息 ;

使用

jmap -histo:live pid

输出堆中对象的相关统计信息。

第一列是序号,
第二列是对象个数,
第三列是对象大小byte,
第四列是class name

使用

jmap -finalizerinfo pid

输出等待终结的对象信息

也可以使用

jmap -clstats pid

来输出类加载器信息 。

如何使用jstack工具

jstack命令最大的作用就是用来生成thread dump文件,thread dump文件中记录了某一时刻CPU信息 。

jstack主要用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,
如线程间死锁、死循环、请求外部资源导致的长时间等待等。
线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

option书面

-F:当正常输出的请求不被响应时,强制输出线程堆栈。
-l:除堆栈外,会打印出额外的锁信息,在发生死锁时可以用jstack -l pid来观察锁持有情况
-m:如果调用到本地方法的话,可以显示C/C++的堆栈

jstack pid

jstack命令会打印出所有的线程,包括用户自己启动的线程和JVM后台线程,我们主要关注的是用户线程;

1"http-nio-8080-exec-8" #26 daemon prio=5 os_prio=0 tid=0x000000005b940000 nid=0x1e2c waiting on condition [0x000000005c0be000] java.lang.Thread.State: WAITING (parking)

http-nio-8080-exec-8:线程名称
daemon 表示线程是否是守护线程
prio 表示我们为线程设置的优先级
os_prio 表示的对应的操作系统线程的优先级,由于并不是所有的操作系统都支持线程优先级,所以可能会出现都置为0的情况
tid 是java中为这个线程的id
nid 是这个线程对应的操作系统本地线程id,每一个java线程都有一个对应的操作系统线程
wait on condition表示当前线程处于等待状态,但是并没列出具体原因
java.lang.Thread.StatC:\Users\Administrator\Desktop\ WAITING (parking) 也是表示的处于等待状态,括号中的内容说明了导致等待的原因,例如这里的parking说明是因为调用了 LockSupport.park方法导致等待

常用命令

如何使用jhat工具

JVM Heap Analysis Tool命令是与jmap搭配使用,用来分析jmap生成的dump,jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可以在浏览器中查看。在此要注意,一般不会直接在服务器上进行分析,因为jhat是一个耗时并且耗费硬件资源的过程,一般把服务器生成的dump文件复制到本地或其他机器上进行分析。

运行,使用jps获取进程pid

再使用jmap -dump:format=b,file=heapDump pid

再到对应heapDump的包目录下执行

jhat heapDump

然后可以通过访问

http://localhost:7000/

一般查看堆异常情况主要看这个两个部分:

Show instance counts for all classes (excluding platform),平台外的所有对象信息。如下图:

Show heap histogram以树状图形式展示堆情况

具体问题排查的时候,需要结合代码,然后观察是否大量应该被回收的对象在一直被引用或者是否有占用内存特别大的对象无法被回收。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
大反转!5600亩承包费用曝光,擅自改变土地性质,转租每年赚百万

大反转!5600亩承包费用曝光,擅自改变土地性质,转租每年赚百万

辣条小剧场
2024-04-25 09:00:03
深圳富婆回国邀20名同学聚餐,一顿狂吃8万8,结账时面面相觑

深圳富婆回国邀20名同学聚餐,一顿狂吃8万8,结账时面面相觑

莉雅细细谈
2024-04-06 20:27:48
久攻不下乌军阵地,原因找到了?俄方抓住了一个最大“内鬼”

久攻不下乌军阵地,原因找到了?俄方抓住了一个最大“内鬼”

高山非凡创作
2024-04-26 18:09:49
莫迪打的啥主意?菲律宾反华军演在即,印度却携带大量导弹到场

莫迪打的啥主意?菲律宾反华军演在即,印度却携带大量导弹到场

梦涵说体育
2024-04-26 13:58:32
为何说高饶事件给刘少奇埋下了巨大隐患?这件事究竟该从何说起呢

为何说高饶事件给刘少奇埋下了巨大隐患?这件事究竟该从何说起呢

拙言问史
2024-03-08 16:52:02
关之琳和钟楚红近照曝光,医美和自然老去的区别出来了,后者更美

关之琳和钟楚红近照曝光,医美和自然老去的区别出来了,后者更美

柠檬有娱乐
2024-04-26 09:59:21
警惕!又一家房企破产

警惕!又一家房企破产

砂石骨料网
2024-04-26 17:14:44
白某(男,47岁),已被大连警方拘留

白某(男,47岁),已被大连警方拘留

环球网资讯
2024-04-26 15:11:12
5轮差8个瓜帅:和阿森纳净胜球差距太大了,他们即能进又不丢

5轮差8个瓜帅:和阿森纳净胜球差距太大了,他们即能进又不丢

直播吧
2024-04-26 15:23:01
德国立下首功!乌克兰称已确认7套“爱国者”,美国还可能提供1套

德国立下首功!乌克兰称已确认7套“爱国者”,美国还可能提供1套

鹰眼Defence
2024-04-25 18:31:42
防火防盗防闺蜜!浙江女子想复婚,来前夫家看娃,下一秒不淡定了

防火防盗防闺蜜!浙江女子想复婚,来前夫家看娃,下一秒不淡定了

情感舍论汇
2024-04-25 19:49:08
副省长胡长清被枪决前一小时的对话

副省长胡长清被枪决前一小时的对话

壹贰叁的壹
2024-04-24 09:41:58
为什么说机票附加费是导致中国民航落后于美国的主要原因之一?

为什么说机票附加费是导致中国民航落后于美国的主要原因之一?

史说佳话
2024-04-16 00:21:56
决战上海海港之前 申花遭遇致命坏消息 天公不作美 胜算大大降低

决战上海海港之前 申花遭遇致命坏消息 天公不作美 胜算大大降低

零度眼看球
2024-04-26 17:08:02
快船官宣伦纳德!乔治稳定军心,哈登面临挑战,泰伦卢很关键

快船官宣伦纳德!乔治稳定军心,哈登面临挑战,泰伦卢很关键

呆哥聊球
2024-04-26 16:18:33
再看一遍德布劳内复刻范佩西名场面 打入英超生涯首粒头球

再看一遍德布劳内复刻范佩西名场面 打入英超生涯首粒头球

直播吧
2024-04-26 09:46:38
林更新是真刚,参加这种大型活动,一点粉也不抹,一点妆也不带,

林更新是真刚,参加这种大型活动,一点粉也不抹,一点妆也不带,

雨天曼曼
2024-04-23 12:38:59
CBA广东男篮奖励每人1辆车!赞助商大气,周琦直接索要,吃相难看

CBA广东男篮奖励每人1辆车!赞助商大气,周琦直接索要,吃相难看

刘哥谈体育
2024-04-26 16:54:53
王传福坐地铁参加北京车展引热议 网友:大佬太低调了

王传福坐地铁参加北京车展引热议 网友:大佬太低调了

手机中国
2024-04-26 12:16:08
富人,被割了

富人,被割了

子木聊房啊
2024-04-25 18:24:25
2024-04-26 19:52:49
田维常
田维常
向java全栈开发看齐
170文章数 52关注度
往期回顾 全部

科技要闻

车展观察|德系日系绝不能放弃中国市场

头条要闻

耶伦就"制裁与俄罗斯进行贸易的中国银行"最新表态

头条要闻

耶伦就"制裁与俄罗斯进行贸易的中国银行"最新表态

体育要闻

库里当选最佳关键球员 10项数据联盟第一

娱乐要闻

金靖回应不官宣恋情结婚的原因

财经要闻

贾跃亭,真他娘是个人才

汽车要闻

2024北京车展 比亚迪的自驱力让对手紧追猛赶

态度原创

艺术
房产
数码
手机
公开课

艺术要闻

日居月諸:莊聲濤新墨作品展

房产要闻

涉及黄埔、番禺、增城!广州新一轮大规模征地启动

数码要闻

三重激光避障!米家全能扫拖机器人M30图赏

手机要闻

OPPO Find X7 Ultra 512GB卫通版突然上架:6799元

公开课

睡前进食会让你发胖吗?

无障碍浏览 进入关怀版