JVM监控和故障处理自带的命令行工具

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28666081/article/details/85408938
本文参考自:《深入理解java虚拟机》

${JAVA_HOME}./bin目录下有很多jdk自带的jvm监控工具,以下将一一讲解:
 
1 jps(虚拟机进程状况工具)
作用:
linux ps 一致(查找进程),查找的第一个参数即LVMID(也是进程pid),用于后面其他命令行工具的使用。
 
用法:
格式:jps [options] [hostid]
示例:jps -l 
//-q仅输出LVMID;-m输出传递给main()的参数;-l输出主类全名(jar包就输出路径);-v输出启动时jvm参数
:hostid为RMI注册表中注册的主机名。其输出的结果如下图:
 
 
分析:jar包加上"-l"会直接输出其路径,其他如tomcat启动的则会输出其入口Boostrap.java的全名。

2 jstat(虚拟机统计信息监控工具)
作用:
监控虚拟机各种运行状态信息,显示本地/远程虚拟机进程中的类加载、内存、垃圾书记、jit编译等运行数据。
 
用法:
格式:jstat [ option lvmid [interval[s|ms] [count] ]
示例:jstat -gcutil 5646 1000 5   //每1000ms执行一次,共执行5次lvmid为5646进程的查询。
//-class监视类装载、卸载数量、总空间、耗费时间;-gc监视java堆各区域最大/小使用空间;-gcutil与-gc类似,不过输出百分比;-gcnew-gcold
 
 

3 jinfo(Java配置信息工具)
作用:
实时查看和调整(使用-flag name=value可在运行期改变虚拟机参数)虚拟机参数。
 
用法:
格式:jinfo [ option ] lvmid
示例:jstat 5646
 
注:上面还有很多相关信息,请自行测试。

4 jmap(Java内存映像工具)
作用:
获取当前节点的堆转存快照,可用于分析重复引用、内存泄漏等问题
 
用法:
格式:jmap [ option ] lvmid
示例:jmap 5646

5 jstack(Java堆栈跟踪工具)
作用:
- 生成虚拟机当前时刻的线程快照(threaddump/javacore)。
- 用于定位线程出现长时间停顿的原因(如死锁、死循环、请求外部资源导致的长时间等待等问题)。
怎么用?线程出现停顿的时候通过jstack查看各个线程的调用堆栈,就可以知道没有响应的线程在后台干嘛?等什么资源?
 
用法:
格式:jstack [ option ] lvmid
示例:jstack -l 5646
//-F正常请求不响应也强制输出;-l除堆栈外,显示关于锁附加信息;-m线程调用本地方法的C/C++的堆栈
注:线程堆栈怎么看?如何在现实中差错?更多请关注后续。
 
 

猜你喜欢

转载自blog.csdn.net/qq_28666081/article/details/85408938