Java虚拟机常用的调试命令(摘录《深入理解Java虚拟机文档》)
- jps:虚拟机进程状态工具
作用:可以列出正在运行的虚拟机进 程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一 ID
jps -l (显示进程和主类)
2388 D:\Develop\glassfish\bin\..\modules\admin-cli.jar
2764 com.sun.enterprise.glassfish.bootstrap.ASMain
3788 sun.tools.jps.Jps
jps -q (显示进程)
2388
2764
3788
jps -m (显示虚拟机启动时传递main函数的参数)
22039 QuorumPeerMain /usr/local/zookeeper/bin/../conf/zoo.cfg
6138 test-test-mast.jar --spring.profiles.active=dev
jps -v (显示虚拟机进程参数)
22039 QuorumPeerMain -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false
32345 Jps -Denv.class.path=.:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib -Dapplication.home=/usr/local/jdk1.8 -Xms8m
- 虚拟机统计信息监视工具
本地:jstat [ option vmid [interval[s|ms] [count]] ]
选项option代表用户希望查询的虚拟机信息,主要分为三类:类加载、垃圾收集、运行期编译状 况
参数interval和count代表查询间隔和次数,如果省略这2个参数,说明只查询一次。假设需要每250 毫秒查询一次进程2764垃圾收集状况,一共查询20次,
jstat -gc 2764 250 20
远程:[protocol:][//]lvmid[@hostname[:port]/servername]
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201207153450370.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hsejE3ODY3MzQ3OTA=,size_16,color_FFFFFF,t_70#pic_center)
示例:jstat -gcutil 2764
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 6.20 41.42 47.20 16 0.105 3 0.472 0.577
说明:
E 新生代Eden区 6.2%
O 老年代表示Old 41.42%
P 永久代 47.20%
YGC 表示Young GC 16次
YGCT Young GC耗时 0.105秒
F GC Full GC 3次
FGCT Full GC Time 0.472秒
GCT GC总耗时 0.577秒
- jinfo java配置信息工具
jinfo [ option ] pid
- jmap java内存映像工具
jmap的作用并不仅仅是为了获取堆转储快照,它还可以查询finalize执行队列、Java堆和方法区的 详细信息,如空间使用率、当前用的是哪种收集器等。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201207153329615.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hsejE3ODY3MzQ3OTA=,size_16,color_FFFFFF,t_70#pic_center)
使用jmap生成dump文件
jmap -dump:format=b,file=eclipse.bin 3500
Dumping heap to C:\Users\IcyFenix\eclipse.bin ...
Heap dump file created
- jhat:虚拟机转存储快照分析工具
- jstack: Java堆栈跟踪工具
命令用于生成虚拟机当前时刻的线程快照
线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的 目的通常是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间挂 起等
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201207154227592.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hsejE3ODY3MzQ3OTA=,size_16,color_FFFFFF,t_70)
- 可视化故障处理工具
JConsole、 JHSDB、VisualVM和JMC