工欲善其事必先利其器,想要更好的了解虚拟机,借助一些好用的工具会让你事半功倍
JDK命令行工具
jdk命令行工具在jdk安装目录下的bin文件夹中
1.jps:虚拟机进程状态工具
类似linux系统中的ps命令,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类的名称,以及这些进程的本地虚拟机的唯一ID,如下图
进程号为6920的是我开启的tomcat服务器,主类是org.apache.catalina.startup.Bootstarp
2.jstat:虚拟机统计信息监控工具
可以查询类装载、垃圾回收相关的信息,以及JIT编译相关信息
jstat -gc 6920 250 20 表示监测进程ID为6920的GC情况,每250毫秒1次,监测20次,如下图
S0C 表示当前S0区域的大小(S0 capacity),同理S1表示当前S1区域的大小,EC表示eden区的大小, OC表示老年代的大小(old), PC表示永久带的大小
S1C 表示当前S0区域已经使用的空间(S0 used),其他同理
YGC 表示虚拟机当前所执行的mirror GC的次数,即新生代垃圾回收的次数
YGCT表示新生代GC所花费的时间,单位为s
FGC表示执行了多少次FULL-GC
FGCT执行FULL-GC花费的时间
GCT执行GC花费的总时间
3.jinfo:java配置信息工具
可以实时的查看和调整虚拟机的各项参数
其他还有jmap,jhat之类的没有用过
JDK的可视化工具
1.jconsle:java监视和管理控制台
在jdk安装目录下的bin文件夹里,打开后如图
选择6920连接
有若干个标签页,概述,内存,线程,类,VM概要,MBean
概述中可以看到虚拟机主要运行数据的概览,包括堆内存使用情况,线程,类和CPU占用率的实时曲线图
内存标签页中可以查看不同内存区域的内存使用情况,如下图
包括堆,非堆,eden区,survivor区,老年代,永久代等内存区域的情况,同时内存标签页中也可以查看到gc的时间,以及选择的垃圾回收器等
线程标签页,可以查看到当前运行的所有线程信息,还可以监测死锁
未完待续。。。