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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文来自个人博客 sunyongfeng.com。博客的文章保持更新,此文可能不是最新状态。 善用/var/log...
    jeromesun阅读 885评论 0 2
  • **在这里记录本人使用linux中的一些命令** 命令 df 参数说明: -T:显示文件系统类型 -h:方便阅读方...
    Lucas_Wong阅读 741评论 0 51
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,023评论 3 119
  • 一、及时表达你的愤怒 最近,在我身上发生了的几件事。 用某打车软件叫车,司机接单后却以不认识路为由拒绝来接我,我询...
    陶心暖暖阅读 1,284评论 14 16
  • 你们有没有这样的经历:每当你生病之后,你都会埋怨这样的自己。为什么我的体质这么差?为什么别人健健康康,可以在外面愉...
    山顶洞人爱果蔬阅读 762评论 4 6