一、JDK的命令行工具
1.1 jps 虚拟机进程状况工具
可以列出正在运行的虚拟机进程并显示虚拟机执行主类(main()函数所在的主类)名称以及这些进程的本地虚拟机唯一ID
1.1.1 jps使用
选项 | 作用 |
---|---|
-l | 输出主类的全名,如果进程执行的是jar包,输出jar的路径 |
-m | 输出虚拟机进程启动时传递给主类main()函数的参数 |
-v | 输出虚拟机进程启动时jvm参数 |
如:
$ jps -l
4560 sun.tools.jps.Jps
4340
16584 com.example.demo.other.test2
17192 org.jetbrains.jps.cmdline.Launcher
1.2 jstat:虚拟机统计信息监视工具
用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类加载,内存,垃圾收集,JIT编译等运行数据。
1.2.1 参数格式
jstat [ option vmid [interval [s|ms] [count] ] ]
interval和count代表查询间隔和次数
option 主要分为类装载,垃圾收集,运行期编译等状况
1.2.2 jstat工具主要选项
选项 | 作用 |
---|---|
-class | 监视类装载,卸载数量,总空间,以及类装载所耗费的时间 |
-gc | 监视java情况,包括Eden区,两个Servivor区,老年代,永久代的容量,已用空间,GC时间合计等细信息 |
-gcutil | 监视内容与GC基本相同,单输出主要关注已使用空间占总空间的百分比 |
-gccause | 监视内容与-gcutil基本相同,但是会额外输出导致上一次GC的原因 |
-gcnew | 监视新生代GC状况 |
1.2.3 测试
$ jstat -gcnew 17636
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
2560.0 2560.0 2539.6 0.0 7 15 2560.0 31744.0 22835.5 4 0.025
1.3 jinfo
实时的查看和调整虚拟机各项参数
1.3.1 测试
$ jinfo -flag CMSInitiatingOccupancyFraction 18372
-XX:CMSInitiatingOccupancyFraction=-1
1.4 jmap:java内存映像工具
用于生成堆转储快照(一般称为dump文件或者heapdump文件),他还可查询finalize执行队列,java堆和永久代的详细信息。,如空间使用率,当前用的是哪种收集器等。
1.4.1 jmap工具主要选项
-dump | 生成Java堆转储快照 |
---|---|
-heap | 显示堆详细信息 |
-finalizerinfo | 显示在F-Queue中等待Finalizer线程执行finlize方法的对象 |
-histo | 显示堆中对象统计信息,包括类数量,实例数量,合计容量 |
1.4.2 测试
$ jmap -dump:format=b,file=idea.bin 5160
Dumping heap to C:\quickKill\idea.bin ...
Heap dump file created
1.5 jhat:虚拟机堆转储快照分析工具
与jmap搭配使用,来分析jamp生成的堆转储快照。jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可在浏览器中查看。
$ jhat idea.bin
Reading from idea.bin...
Dump file created Sat Aug 10 19:14:43 CST 2019
Snapshot read, resolving...
Resolving 25842 objects...
Chasing references, expect 5 dots.....
Eliminating duplicate references.....
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
Server is ready后输入localhost:7000/查看结果
1.6 jstack:java堆栈跟踪工具
- 用于生成当前虚拟机的线程快照,线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因
1.6.1 jstack工具的主要选项
-F | 当正常输出的请求不被响应时,强制输出线程堆栈。 |
---|---|
-l | 除堆栈外,显示关于锁的附加信息 |
-m | 如果调用到本地方法的话,可以显示c/c++的·堆栈 |
1.6.2 测试
jstack -l 14464
2019-08-10 19:51:35
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.181-b13 mixed mode):
"A1" #12 prio=5 os_prio=0 tid=0x000000001774c000 nid=0x38f8 waiting on condition [0x000000001845e000]
java.lang.Thread.State: WAITING (parking)
..........