mac java visualvm_IDEA安装 VisualVM 及使用

1. VisualVM是什么

20181104202338433226.png

按照VisualVM官网(http://visualvm.github.io/)上的介绍,VisualVM是一个集成命令行JDK工具和轻量级分析功能的可视化工具。专为开发和生产时间使用而设计。

我们在jdk安装包中也可以发现它

20181104202339045429.png

2. IDEA安装VisualVM插件

File-> Setting->Plugins -> Browers Repositrories 搜索VisualVM Launcher安装并重启IDEA。

20181104202339399862.png

出现上图中的两个按钮即为安装成功,当我们通过他们启动项目时,会自动打开VisualVM控制台面板。

3. VisualVM本地使用

20181104202339619552.png

右侧有概述(Overview)、监视(Monitor)、线程(Threads)、抽样器(Sampler)几个标签,其中

概述中可以看到程序的基本信息和启动参数、环境变量等等;

监视是几个折线图,用于显示CPU、内存(分为Heap和Metaspace)、类和线程的使用情况或者数量,另外还包括执行垃圾回收和对堆 Dump的快捷功能;

线程可详细查看每个线程的运行时间及状态等;

抽样器可对CPU和内存进行一段时长的取样,从而对应用程序进行分析。

使用时,可通过监视中的各个折线图查看系统的变化,如果执行某段程序时,某个指标出现突然增大等问题,同时程序运行也出现问题,可进入到该面板做细致检查。

20181104202340029640.jpg

如果某段程序执行时CPU飙升或者内存溢出,此时排除系统性能原因,多半是由于低效的代码或者不合理的堆空间分配引起,可以在复现该问题的同时到抽样器面板进行抽样,从而确定应该优化哪个方法或者分配多大内存。

当对一个多线程应用程序进行调试或者开发后期做性能调优的时候,往往需要了解当前程序中所有线程的运行状态,是否有死锁、热锁等情况的发生,从而分析系统可能存在的问题。在 VisualVM 的监视标签和线程标签内,我们可以查看当前应用程序中所有活动线程(Live threads)和守护线程(Daemon threads)的数量等实时信息。

4. 远程监视

在实际工作中,需要在本机监控的生产环境下的jvm,Visualvm目前支持两种remote connection方式,分别是jstatd和JMX方式: 这里主要介绍的是通过JMX方式.。

4.1 修改远程jvm配置

进入JAVA_HOME\jre\lib\management\,拷贝一份jmxremote.password.template 并改名为 jmxremote.password到当前目录,并去掉# monitorRole  QED 和 # controlRole  R&D 这两行前面的注释符号。

20181104202340276669.png

[root@izbp1cq2wdg9kxunr0sz02z ~]#cd /usr/java/jdk/jdk1.8.0_172/jre/lib/management

[root@izbp1cq2wdg9kxunr0sz02z management]#cp jmxremote.password.template jmxremote.password

[root@izbp1cq2wdg9kxunr0sz02z management]#ls

jmxremote.access jmxremote.password jmxremote.password.template management.properties snmp.acl.template

[root@izbp1cq2wdg9kxunr0sz02z management]#vim jmxremote.password

[root@izbp1cq2wdg9kxunr0sz02z management]#chmod 600 jmxremote.password

[root@izbp1cq2wdg9kxunr0sz02z management]#chown root jmxremote.password

我这里使用的是默认的两个远程控制账号,如果在 jmxremote.password 中自定义了远程登录账号和密码,需要修改同目录下的jmxremote.access 文件,该文件可以控制访问权限。

4.2 修改远程机器上需要被监控的程序的配置文件

我这里是监控Tomcat容器内部署的应用

修改TOMCAT_HOME/bin/catalian.sh文件,添加

export JAVA_OPTS="-Djava.rmi.server.hostname=47.xx.xxx.xx1 -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"

详细参数如下

参数描述

com.sun.management.jmxremote

true / false. Default is true

com.sun.management.jmxremote.port

Port number. No default.

com.sun.management.jmxremote.ssl

true / false. Default is true.

com.sun.management.jmxremote.ssl.enabled.protocols

Default SSL/TLS protocol version.

com.sun.management.jmxremote.ssl.enabled.cipher.suites

Default SSL/TLS cipher suites.

com.sun.management.jmxremote.ssl.need.client.auth

true / false. Default is false

com.sun.management.jmxremote.authenticate

true / false.Default is true

com.sun.management.jmxremote.password.file

JRE_HOME/lib/management/jmxremote.password

com.sun.management.jmxremote.access.file

JRE_HOME/lib/management/jmxremote.access

com.sun.management.jmxremote.login.config

Default login configuration is a file-based password authentication

重启tomcat。

可以用 netstat -anp| grep 18999 ,查看守护线程是否已经启动。

4.4 VisualVM配置

20181104202340507100.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值