前言
![](https://ask.qcloudimg.com/http-save/yehe-8223537/863ceacce4edc7b144ae2f053e89b0fc.png)
本章讲解JVM优化中常见的工具的使用
![](https://ask.qcloudimg.com/http-save/yehe-8223537/8c7a1910e5dff54e128e04f3e49c051b.png)
方法
![](https://ask.qcloudimg.com/http-save/yehe-8223537/a3e0fd8ce540fb4e31e169785aec53b9.png)
1.概念
![](https://ask.qcloudimg.com/http-save/yehe-8223537/aa6d06c7cd749fd5707cedae5ced84a8.png)
在JVM优化的道路上,任重道远,我们需要借助JDK本身的工具进行分析。
![](https://ask.qcloudimg.com/http-save/yehe-8223537/a9f8d9d2583794a6f64fa0cd0dd0feda.png)
2.工具详情
![](https://ask.qcloudimg.com/http-save/yehe-8223537/6b134ca3e6420803d10b005dad73cb18.png)
下面介绍的小工具均在JAVA_HOME/bin下,我的路径是这样的。
![](https://ask.qcloudimg.com/http-save/yehe-8223537/725141b06dd43b98c9012236fe81cc68.png)
![](https://ask.qcloudimg.com/http-save/yehe-8223537/736b0542135adf05ca32df255c6f8b4f.png)
1)jps:JVM Process Status Tool,显示系统内所有的JVM进程
语法:
-q
只输出LVMID,省略主类名称;
-m
输出虚拟机进程启动时传给主类函数的参数;
-l
输出主类的完成package名称或者jar包完整路径名;
-v
输出虚拟机启动时的JVM参数
使用示例:
2)jstat:JVM Statistics Monitoring Tool,可以收集JVM相关的运行数据
语法:
jstat命令稍许有些复杂,它主要有以下参数:
option:选项,jstat主要提供以下选项:
-class
监视类的装载/卸载数量、总空间以及类装载所耗时间;
-gc
监视java heap情况,包括eden区和两个survivor区、old区、永久区等的容量,已用空间和GC时间等信息;
-gccapacity
监视内容与-gc基本是一致的,-gccapacity的输出包括heap各个区域使用到的最大最小空间;
gcutil
监视内容同样与-gc基本一致,-gcutil的输出主要是heap各个区域使用空间占总空间百分比;
gccause
与-gcutil功能一致,但是会额外输出导致上一次gc的原因;
gcnew
监视young区gc情况;
gcnewcapacity
监视内容与-gcnew基本相同,-gcnewcapacity的输出包括使用到的最大最小空间;
-gcold
监视old区gc情况;
-gcoldcapacity
监视内容与-gcold基本相同,-gcoldcapacity的输出包括使用到的最大最小空间;
-gcpermcapacity
输出永久代使用到的最大最小空间。注意:JDK 8废除了永久代,引入了Metaspace,这个命令在JDK 8的环境下就不能使用了,那要看元数据空间相关情况,使用-gcmetacapacity即可
-compiler
输出JIT编译器编译过的方法以及耗时等信息;
-printcompilation
输出以及被JIT编译的方法
vmid:虚拟机进程id,这时候小伙伴们肯定又要开始疑惑了,这个vmid与lvmid又有什么区别?其实对于本地虚拟机进程,它俩没任何区别,但是如果是远程虚拟机进程,它俩就有区别了,远程虚拟机进程vmid格式应该是这样:
[protocol:][//] lvmid [@hostname[:port]/servername];
interval:查询时间间隔;
count:查询次数。
使用示例:
其中的内涵大家自行百度。
其他的还有如下的小工具大家可以自行查找。
jinfo:Configuration Info for Java,显示JVM配置信息;
jmap:Memory Map for Java,用于生成JVM的内存快照;
jhat:JVM Heap Dump Browser,用于分析heapdump文件,它可以建立一个http/html服务,使用者可以在浏览器上查看分析结果;
jstack:Stack Trace for Java,显示JVM的线程快照。
前面的都是虾兵蟹将,接下来出场的才是重头戏,也就是融合了前面所有工具功能的图形化用户界面:jvisualvm
该工具极其强大,是JVM分析的首选!
附录一:jvisualvm添加GC插件
jvisualvm还有个功能就是可以添加我们所需要的插件,其中GC插件尤为重要!
1.工具->插件
2.选择可用插件->Visual GC
3.一路下一步
4.完成后重启应用程序即可看到如下tab页
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/113073.html