福利:这是我的个人IT资源网站,所有资源都免费,注册登录后就可以看到密码,需要什么大家尽情选取!
在jdk的bin目录中除了java和javac两个命令外,其实其他的命令也是很有用的,我们可以通过这些命令了解JVM的运行情况包括堆内存,在我们排查类似于内存溢出等问题时非常有用,下面我们来看一下比较实用的命令使用
- jps命令:JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程
主要选项
-q:只输出LVMID(进程ID),省略主类名称
-m:输出虚拟机进程启动时传递给主类main()函数的参数
-l:输出主类的全名,如果进程执行的是Jar包,输出Jar路径
-v:输出虚拟机进程启动时JVM参数
- jstat命令:JVM Statistics Monitoring Tool,用于手机HotSpot虚拟机个方面的运行数据
主要选项
-class:监视类装载、卸载数量、总空间以及类装载所耗费的时间
-gc:监视Java堆状况,包括Eden区、两个survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息
S0C:Survivor0区的容量
S1C:Survivor1区的容量
S0U:Survivor0区的使用容量
S1U:Survivor1区的使用容量
EC:Eden区的容量
EU:Eden区的使用容量
OC:老年代的容量
OU:老年代的使用容量
MC:MetaSpace的容量
MU:MetaSpace的使用容量
CCSC:压缩类空间的容量
CCSU:压缩类空间的使用容量
YGC:Yong GC次数
YGCT:Yong GC耗时
FGC:Full GC的次数
FGCT:Full GC耗时
GCT:垃圾回收总耗时
-gccause:与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因
-gcnew:监视新生代GC状况
-gcold:监视老年代GC状况
-compiler:输出JIT编译器编译过的方法、耗时等信息
-printcompilation:输出已经被JIT编译的方法
- jinfo命令:Configuration Info for Java,显示虚拟机配置信息
jinfo 进程号:查看某个JVM的全部信息
jinfo -flag 属性名 进程号
- jmap命令:Memory Map for Java,生成虚拟机的内存转储快照(heapdump文件)
主要选项
-dump:生产Java堆转储快照。格式为:-dump:live,format=b,file=文件名称,其中live子参数说明是否只dump出存活对象
-finalizerinfo:显示在F-Queue中等待Finalizer线程执行finalize方法的对象。只在Linux/Solaris平台下有效
-heap:显示Java堆详细信息,如使用哪种回收器、参数配置、分代状况等。只在Linux/Solaris平台下有效
-histo:显示堆中对象统计信息,包括类、实例数量、合计容量
- jhat命令:JVM Heap Dump Browser,用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果
当出现Server is ready时,可以在浏览器输入IP:7000访问
分析结果默认是以包为单位进行分组显示 - jstack命令:Stack Trace for Java,显示虚拟机的线程快照
主要选项
-F:当正常输出的请求不被响应时,强制输出县城堆栈
-l:除堆栈外,显示关于锁的附加信息
-m:如果调用到本地方法的话,可以显示C/C++的堆栈