JVM监控工具之JVisualVM
一、简介
JVisualVM是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(bin/jvisualvm.exe),能够监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。
二、配置
通过JVisualVM远程连接服务器监控JVM,需要在被监控的服务器上tomcat的启动文件catalina.sh中加入以下配置:
JAVA_OPTS="-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.182.130 -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
JMX的相关参数:
| 参数名 | 类型 | 描述 |
| -Dcom.sun.management.jmxremote | 布尔 | 是否支持远程JMX访问,默认true |
| -Dcom.sun.management.jmxremote.port | 数值 | 监听端口号,方便远程访问 |
| -Dcom.sun.management.jmxremote.authenticate | 布尔 | 是否需要开启用户认证,默认开启 |
| -Dcom.sun.management.jmxremote.ssl | 布尔 | 是否对连接开启SSL加密,默认开启 |
| -Dcom.sun.management.jmxremote.access.file | 路径 | 对访问用户的权限授权的文件的路径,默认路径JRE_HOME/lib/management/jmxremote.access |
| -Dcom.sun.management.jmxremote. password.file | 路径 | 设置访问用户的用户名和密码,默认路径JRE_HOME/lib/management/ jmxremote.password |
三、连接



四、模块介绍
1、概述

概述界面,主要显示JVM的信息,包括JVM参数以及系统属性等
2、监视

(1)按钮“执行垃圾回收”可通知JVM执行Full GC
(2)按钮“堆Dump”可生成堆内存快照,下面详细讲解堆Dump的使用
2.1、堆dump
2.1.1、概要
首先生成堆内存快照

把文件下载到本地后使用JVisualVM打开,如下图:

(1)红框标注的箭头处,可以凭你的点击顺序切换前后窗口
(2)查询最大的对象,个数可自行定制;
(3)点击“显示线程”可以显示线程细节,如下所示:

(1)timed_waiting和runnable表示线程运行状态
(2)daemon表示这个线程是守护线程,如没有标记daemon则表示它是一个用户线程,如main线程
(3)prio表示该线程的优先级,在java线程中数字越大优先级越高,取值在1至10之间,默认为5
(4)点击被标注成蓝色的相关类,可以在类实例数界面查看细节
2.1.2、实例数

(1)右上角的三个按钮可以对界面进行定制
(2)点击“计算保留大小”可计算每个field的保留尺寸,简言之就是它所占的byte值
(3)右下角红框处标记出了,不同的图形代表不同的角色
2.1.3、类

(1)左下角可以通过过滤器来过滤显示视图
(2)右击某个类可以让其在实例界面显示,查看其细节
(3)点击右上角红框处可以与另一个内存快照进行比较,在比较视图中可以看出每个类的增加和减少的情况
2.1.4、QQL控制台

(1)选中具体的Query实例,点击打开,再点击执行就可以进行查询了,保存按钮可以保存你的query语句
(2)比较实用的是PermGen分析语句
3、线程

(1)线程的颜色从绿、紫、黄、褐、橙,分别代表运行、休眠、等待、驻留和死锁
(2)点击线程Dump即可生成线程快照,其功能跟监视里面堆dump生成的heapdump文件里面的显示线程类似,如下图:

4、抽样器
4.1、抽样器简介:
(1)通过“设置”可以对CPU的采样来源以及内存的刷新时间进行设置
(2)点击CPU或者内存即可开始监控,点击Stop则停止采样
4.2、CPU
4.2.1、CPU样例

(1)点击线程Dump可生成线程快照
(2)点击快照可生成线程的快照,快照里面包含了所有线程的调用树以及其热点编译情况,如下图所示:

4.2.2、线程CPU时间

(1)点击增量按钮后,可记录线程的变化,功能有点类似JProfilter的“Mark Current Values”。
4.3、内存
4.3.1、堆柱状图

功能与前面介绍过的类似
4.3.2、每个线程分配

功能与前面介绍过的类似
JVM监控工具之JVisualVM的更多相关文章
- JVM 监控工具 jstack 和 jvisualvm 的使用
Java线程状态 线程的五种状态 * 新建:new(时间很短) * 运行:runnable * 等待:waitting(无限期等待),timed waitting(限期等待) * 阻塞:blocked ...
- jvm 监控工具
背景 不懂jvm监控工具好意思说自己搞java的吗.其实搞了十多年的人我都见过不懂得,不懂不要紧,老实工作就行啊.这就是属于非技术的话题了,实在不知从何说起.还是赶紧学习下吧,可以去装了.我认真学习后 ...
- Java线程及Jvm监控工具
Java线程状态 线程的五种状态 * 新建:new(时间很短) * 运行:runnable * 等待:waitting(无限期等待),timed waitting(限期等待) * 阻塞:blocked ...
- JVM监控工具介绍
JVM监控工具介绍 VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力.所有这些都是免费的!它囊括的命令行工具包括jps,jstat,jmap,jinfo,jst ...
- Java之JVM监控工具分享
Java之JVM监控工具分享 JVM的基本知识常用的也就是类加载机制,内存区域.分配.OOM,GC,JVM参数调优 几个链接自己看: 内存区域&类加载机制 分配策略&垃圾回收算法.收集 ...
- Java内存泄露监控工具:JVM监控工具介绍
本文将对JVM监控工具jstack, jconsole, jinfo, jmap, jdb, jstat进行详细的介绍,具体内容请看下文 Sun JDK监控和故障处理工具 名称 主要作用 jps JV ...
- Java JVM监控工具JConsole简介
Java JVM监控工具JConsole简介 jconsole命令 功能:打开java监视管理控制台 方法: jconsole [选项1] [选项2] …… [选项n] 常用选项: -help ...
- 常见JVM监控工具用法介绍
VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力.所有这些都是免费的!它囊括的命令行工具包括jps,jstat,jmap,jinfo,jstack,JConso ...
- JVM监控工具用法指导
JVM监控工具用法指导 2010-09-27 15:39 dolphin-ygj javaeye.com 字号:T | T 通过JVM监控工具的使用可以及时发现问题,剔除安全隐患,这里向大家描述一下常 ...
随机推荐
- python多线程之threading、ThreadPoolExecutor.map
背景: 某个应用场景需要从数据库中取出几十万的数据时,需要对每个数据进行相应的操作.逐个数据处理过慢,于是考虑对数据进行分段线程处理: 方法一:使用threading模块 代码: # -*- codi ...
- AIX 逻辑卷简介
1.基本概念 LVM的组成:物理卷PV.卷组VG.逻辑卷LV.物理分区PP.逻辑分区LP.文件系统等 物理卷:物理卷表示AIX可以识别的物理磁盘(hdisk*),一个物理卷指一块硬盘.可以是内部的 ...
- Linux系统nmtui/nmcli绑定双网卡为team
今天给大家带来图形化界面网络配置工具—nmtui的使用方法,可以省去敲命令的繁琐,较少误操作,结果更加直观. 小知识: nmtui:Network Manager Text User Interfac ...
- 基本运算符与if while详解:
''' 基本运算符与if while详解: ''' # 算术运算符 # + - * / % // ** # 返回一个数值 # 比较运算符 # > >= < <= == != # ...
- 漫谈 MyCat 配置系统
上篇文章<MyCat 启蒙:分布式系统的数据库架构演变>中,我们通过一个项目从零到百万级访问的变化,展示了这个过程中的数据层架构变化.其中说到了数据层架构变化所带来的三个问题: 读写数据源 ...
- 基于注解的IOC配置
1 明确 注解配置和XML配置要实现的功能都是一样的,都是要降低程序间的耦合.只是配置的形式不一样. 关于实际的开发中到底是使用XML还是注解,每家公司有着不同的习惯.具体问题具体分析. 2 环境搭建 ...
- dubbo网关
https://blog.csdn.net/Paranoia_ZK/article/details/90743432 springcloud 和 dubbo 混用
- ZROI 19.08.10模拟赛
传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. A \(20pts:\) 枚举操作序列然后暴力跑,复杂度\(O(6^n)\). \([50,80]pts:\) 枚举改成dfs,每层操 ...
- mybatis简单用法
1.resultType 和 resultMap 引言: MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表 ...
- 014:Django内置的URL转换器
Django内置的URL转换器: 上节中我们说了URL中传参的情况,传递参数是通过 <> 尖括号来进行指定的.并且在传递参数的时候,可以指定这个参数的数据类型,比如文章的 id 都是 in ...