目录
jdk本身为我们定位java相关的生产问题提供了内置的工具,这些内置的工具用好了足以应对常见的大多数生产问题,这篇就将jdk自带命令行和可视化工具做一下汇总介绍。
类似于ps命令,输出虚拟机进程信息,第一列为LVMID跟pid是一致的。
虚拟机统计信息监视工具,监视虚拟机各种运行状态比如GC的统计信息。
比如:每250毫秒查询一次进程垃圾收集状况,一共查询20次。
#格式:jstat [option] lvmid interval count
$jstat -gc 17936 250 20
解释:
实时查看和调整虚拟机各项参数
比如:查看进程17936的System.properties()信息
jinfo -sysprops 17936
查看老年代触发gc百分比
$jinfo -flag CMSInitiatingOccupancyFraction 17936
jmap命令用于生成heapdump文件,也就是“堆转储快照”。
其他方式如:-XX:HeapDumpOnOutOfMemoryError或者kill -3 pid
# 给进程为17936生成dump二进制文件,名称为jeffdump.bin
$jmap -dump:format=b,file=jeffdump.bin 17936
# 打印
C:\Users\Administrator>jmap -dump:format=b,file=jeffdump.bin 17936
Dumping heap to C:\Users\Administrator\jeffdump.bin ...
Heap dump file created
jhat内置了一个微型的http/html服务器,生成dump文件的分析结果后,可以在浏览器中查看。
一般不会再服务器上直接用jhat分析dump,毕竟耗时耗资源,而且jhat分析功能简陋,一般可以用VisualVM或者Eclipse Memory Analyzer。
$jhat jeffdump.bin
C:\Users\Administrator>jhat jeffdump.bin
Reading from jeffdump.bin...
Dump file created Wed Apr 29 17:30:48 CST 2020
Snapshot read, resolving...
Resolving 1831310 objects...
Chasing references, expect 366 dots.............
................................................
................................................
................................................
.....................................
Eliminating duplicate references................
................................................
................................................
................................................
..................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
打开浏览器:http://localhost:7000/
分析内存泄露问题主要使用到Heap Histogram,可以找到内存中总容量最大的对象
生成虚拟机当前时刻的线程快照,即threaddump或者javacore文件。也就是当前虚拟机每一条线程正在执行的方法堆栈集合,可以用来定位线程长时间停顿的原因,比如线程间死锁、死循环、请求外部资源导致的长时间等待。
$jstack -l 17936
OOM:GC overhead limit exceeded。不过可以设置-XX:-UseGCOverheadLimit关闭这个异常的抛出。不过仍然可能会抛出OOM:Java Heap sapce异常!或者OOM:unable to creare new native thread.-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
生成的java_pid9516.hprof文件,也可以使用Eclipse Memory Analyzer打开。
作者:jeff.sheng
来源:blog.csdn.net/shengqianfeng/article/
details/117415508
推荐
PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!