文章目录
一、JDK的命令行工具
JDK的 bin 目录下为我们提供了很多的工具,如在 Windows安装JDK及Maven 中使用的 java
、javac
,以及在 类文件结构及字节码指令 中使用的 javap
等,其实bin目录下还为我们提供了很多的工具,包括了很多用于监视虚拟机性能和故障处理工的工具,如下:
这里可以启动如下代码,然后利用介绍的JDK命令行工具查看
public class App {
public static void main(String[] args) {
for (;;) {
}
}
}
1.1、jps
列出当前机器上正在运行的虚拟机进程。
常用参数 | 作用 |
---|---|
-p | 仅仅显示进程ID |
-m | 输出虚拟机进程启动时传递给主类main()函数的参数 |
-l | 输出主类的全名,如果进程执行的是Jar包,输出Jar路径 |
-v | 输出虚拟机进程启动时JVM参数 |
1.2、jstat
可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面,只提供了纯文本控制台环境的服务器上。
选项 | 作用 |
---|---|
-class | 监视类装载、卸载数量、总空间以及类装载所耗费的时间 |
-gc | 监视Java堆状况,包括Eden区、两个Survivor区、老年代、永久代等容量、 已用空间、GC时间等合计信息 |
-gccapacity | 监视内容与-gc 基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间 |
-gccause | 监视内容与-gc 基本相同,但是会额外输出导致上一次GC产生的原因 |
-gcutil | 监视内容与-gc 基本相同,但输出主要关注已使用空间占总空间的百分比 |
-gcnew | 监视新生代GC状况 |
-gcnewcapacity | 监视内容与-gcnew 基本相同,输出主要关注使用到的最大、最小空间 |
-gcold | 监视老年代GC状况 |
-gcoldcapacity | 监视内容与-gcold 基本相同,输出主要关注使用的最大、最小空间 |
-gcpermcapacity | 输出永久代使用到的最大、最小空间 |
-compiler | 输出JIT编译器编译过的方法、耗时等信息 |
-printcompilation | 输出以及被JIT编译的方法 |
-
查看类装载、卸载数量、总空间以及类装载时间情况
-
查看GC情况
选项 作用 S0C Survivor0区容量 S1C Survivor1区容量 S0U Survivor0区已使用容量 S1U Survivor1区已使用容量 EC Eden区容量 EU Eden区已使用容量 OC 老年代的容量 OU 老年代已使用的容量 MC 元空间(MetaSpace)的容量(JDK1.8) MU 元空间(MetaSpace)已使用容量(JDK1.8) CSSC 压缩类的容量 CSSU 压缩类已使用容量 YGC 发生YoungGC的次数 YGCT 发生YoungGC所消耗的时间 FGC 发生FullGC的次数 FGCT 发生FullGC所消耗的时间 GCT 表示垃圾收集消耗的总时间 另外命令后面还可以再加上查询间隔时间及查询次数,如每隔250毫秒查询一次我们运行的App垃圾收集状况,一共查询5次
-
<