JVM 学习(用 VisualVM监控JVM内存和GC情况)

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 中就可以连接远程的主机
最终效果 如下图

屏幕快照 2019-02-23 下午9.24.57.png

工具只是辅助我们分析,真正起作用还需要我们用自己的知识分析

你可能感兴趣的:(JVM 学习(用 VisualVM监控JVM内存和GC情况))