在上一期主要讲到JVM优化的概念及经验。这一节章节去讲述相关工具的基本使用。html
JDK自带,VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序作性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操做。java
CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=jj.xx.yy.zz -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"git
chmod +w jmxremote.password
chmod 0400 jmxremote.passwordgithub
主要信息vim
主要信息jvm
cpu指标工具
如cpu是多核,若是是n核,这里显示的单核平均占用
在经过top命令,看到的是 乘上n的结果,VisualVM显示 10.2/4(核数) =2.5%
操做性能
主要信息优化
须要配置url,否则会报如下出错
https://visualvm.github.io/pl... 在这个网站选择合适的插件地址网站
填入URL地址,肯定
配置成功后,在可用插件列表
VIsual GC
查看服务GC状态,须要配置jstatd并启动
cd /usr/local/src/jdk1.8.0_131/bin/ vim jstatd.all.policy
加入如下代码
grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; };
若是没有配置{java.home},填写jdk的绝对路径也可行
在jdk.home/bin下启动
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=ip.xx.yy.zz -J-Djava.rmi.server.logCalls=true
更改以上Ip ip.xx.yy.zz地址
指定服务的端口号,使用默认端口1099。确认1099没有防火墙拦截
配置jstated链接
VisualGC界面
注意点:
内存大小分状况
主要关注 GC Time长短及间隔
Tracer
能够查询Heap,PerGen,Classes, Threads
![]()
如图
Tracer能够监控不少项目
利用VisualVm检查full GC
利用sampler的分析内存采集,肯定问题代码
内存视图,查看当前哪些业务对象比较多,并存在一直递增的趋势
线程视图,查看哪些线程分配的内存最多
IntelliJ Idea集成VisualVm
方便本地压测监控JVM状况
本节主要讲解VisualVm的使用以及经常使用插件的使用,好的工具对于找到问题有事半功倍的效果。在实践中理解理论知识。