1.0VisualVM介绍
VisualVM是JDK自带的一款全能型性能监控和故障分析工具,包括对CPU使用、JVM堆内存消耗、线程、类加载的实时监控,内存dump文件分析,垃圾回收运行情况的可视化分析等,对故障排查和性能调优很有帮助。相比jdk自带的其他CUI工具,提供更为直观的展示
启动VisualVM分为两种方式
1:是启动 $JAVA_HOME/bin 下的jvisualvm
2:下载单独的应用程序,这里选用单独的程序
2.0 下载安装VisualVM介
下载地址 https://visualvm.github.io/download.html
启动界面如下图
3.0 使用VisualVM
首先下载安装Visual GC插件用于统计GC情况
连接本地java程序
打开本地的java程序可以看到在local目录下有对应的程序,选择对应的程序就进入监控界面,打开Visual GC选项卡就能直观的查看 该程序的GC情况
有对应的 Eden S0 S1 和Old MetaSpace 各个内存的使用情况统计
类编译事件,加载类统计,新生代,老年代的GC次数和耗时
连接远程程序
我们肯定是要监控运行在服务器上的Java程序的使用情况,连接远程的JVM有两种方法
使用JMX 使用方法请参考其他文章
在服务器上启动 Jstatd 服务 ,需要稍作配置
cd $JAVA_HOME/jre/lib/security
vim jstatd.all.policy
将下面的写入刚创建的文件 ,文件的位置可以随意,但是需要的启动的时候指定该文件的绝对路径
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
启动jstantd,这里参数Djava.security.policy后面值就是上一步创建文件的路径
jstatd -J-Djava.security.policy=jstatd.all.policy & 后台方式启动
jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.22.249 指定主机名
后面可以指定你要传入的参数,启动有问题请参考 jstatd命令说明
在 VisualVM的 Remote 中就可以连接远程的主机
最终效果 如下图
工具只是辅助我们分析,真正起作用还需要我们用自己的知识分析