1. VisualVM是什么

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

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

2. IDEA安装VisualVM插件

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

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

3. VisualVM本地使用

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

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

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

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

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

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

如果某段程序执行时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 这两行前面的注释符号。

[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配置

mac java visualvm_IDEA安装 VisualVM 及使用相关推荐

  1. java怎么安装_Windows、Linux、Mac下安装JDK

    前言 在知乎上看到很多童鞋在学Java的时候,因为安装jdk时没有正确的配置,会遇到很多问题.所以决定今天写一下jdk在Windows.Mac.Linux下都怎么安装. 下载JDK "巧妇难 ...

  2. OpenCV Java入门一 在MAC系统上安装OpenCV

    OpenCV网上讲的一个都不对,要么卡死电脑,要么训练模型写死,要么都只是显示显示人脸就说入门了.没有一个从安装.使用.驱动摄像头.训练模型.辩别人脸的全过程.最夸张的是连怎么安装个OpenCV的资料 ...

  3. mac java verbose_如何检查Mac上是否安装了Java JDK?

    问题 如何检查Mac上是否安装了Java SDK? 这有命令行吗? #1 热门回答(136 赞) javac -version在一个终端上会做 #2 热门回答(44 赞) 你可以利用624461706 ...

  4. mac java 安装教程_在 MacOS 上安装 Java

    在 MacOS 上安装 Java 本小节我们将介绍如何在 MacOS 平台安装 Java . 如果你想在其他平台安装 Java,请查看对应平台的安装教程: 1. 下载安装包 我们首先打开Oracle官 ...

  5. mac osx下载安装java运行环境

    Java运行环境 错误提示No Java runtime present, requesting install. osx 系统设置面板有java的控制面板 但是在命令行 中运行 Java 提示没有J ...

  6. 我的世界java版如何装mod_我的世界mac版怎么装mod 我的世界mac版mod安装教程

    很多朋友问我mac版怎么安装我的世界mod,其实很简单,今天小编就为大家带来我的世界mac版mod安装教程,需要的朋友可以一起看看 首先,进入自己用户的资源库文件夹---Application Sup ...

  7. java tm 安装在哪里,安装以及配置Java环境

    安装 因为并非所有用户都用得着 Java ,所以在默认状态下 OS X 不预装 Java , 如果你需要的话可以手动安装. 安装后在终端输入 java -version java version &q ...

  8. mac mysql密码错误_解决mac 下mysql安装后root用户登录密码错误问题

    使用的mac OS 10.11  安装mysql后访问root/root用户失败,网上找了一些解决办法,下面记录下解决方法方便以后自己查询 概述(看懂下面就不用看了): 停服务:sudo /usr/l ...

  9. java怎么安装_Java怎么安装?Java运行环境安装教程

    最近有网友说不知道怎么安装JAVA,不知道怎么安装最新版本的JAVA,今天极速小编为你做一个简单的安装教程,希望对你们有帮助.首先我们下载JAVA(下载地址:http://www.jisuxz.com ...

最新文章

  1. Python之sort()函数详解
  2. 经典卷积网络进阶--ResNet详解
  3. bootstraptable控制分页_bootstrap table分页(前后端两种方式实现)
  4. mysql 排序num_MySQL 实现row_number() 分组排序功能
  5. Visual Studio Code C++配置文件
  6. 黑马博客——详细步骤(十二)项目功能的实现之文章评论和退出功能
  7. Android基础之图片的压缩算法
  8. (standard input): No keywords in input file
  9. Linux SPI驱动(Linux驱动开发篇)
  10. altium怎么锁定_在AD软件中的锁定与解锁命令应该如何使用?
  11. 腾讯云北京技术沙龙邀请函:AI技术全面场景化落地实践
  12. little VGL Visual Studio 模拟器仿真
  13. DDoS攻击新玩法 暴雪上演营销新方式
  14. eclipse中下划线显示不出来问题解决
  15. 顶点计划2-2调研报告
  16. J-LINK 烧录程序
  17. 视频尺寸修改的小方法,同时处理多个视频,新媒体必备
  18. 插值与拟合 (一) : 拉格朗日多项式插值 、Newton插值 、分段线性插值、Hermite插值 、样条插值、 B 样条函数插值、二维插值
  19. linux 权限rwxrwxrwx(4 2 1)详细说明
  20. 简易五子棋游戏(控制台版)

热门文章

  1. 书论08 卫夫人《笔阵图》
  2. html圆形分成六份,在word中怎样画6等分的正圆
  3. 基于MXNet实现MNIST手写数字体识别
  4. 邮件列表的文化与礼节
  5. MyBatis积累(3):Mybatis的Example[Criteria]的使用
  6. 虚拟机IP总是自动更改
  7. 修改Redis端口号以及解决修改完端口号但是没有生效的问题
  8. 如何选择适合自己的培训机构
  9. BeautifulReport 实现app UI自动化测试
  10. 「推荐」全球iPhone摄影冠军教你:普通手机如何随手拍出专业级照片!