一、简介

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的更多相关文章

  1. JVM 监控工具 jstack 和 jvisualvm 的使用

    Java线程状态 线程的五种状态 * 新建:new(时间很短) * 运行:runnable * 等待:waitting(无限期等待),timed waitting(限期等待) * 阻塞:blocked ...

  2. jvm 监控工具

    背景 不懂jvm监控工具好意思说自己搞java的吗.其实搞了十多年的人我都见过不懂得,不懂不要紧,老实工作就行啊.这就是属于非技术的话题了,实在不知从何说起.还是赶紧学习下吧,可以去装了.我认真学习后 ...

  3. Java线程及Jvm监控工具

    Java线程状态 线程的五种状态 * 新建:new(时间很短) * 运行:runnable * 等待:waitting(无限期等待),timed waitting(限期等待) * 阻塞:blocked ...

  4. JVM监控工具介绍

    JVM监控工具介绍 VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力.所有这些都是免费的!它囊括的命令行工具包括jps,jstat,jmap,jinfo,jst ...

  5. Java之JVM监控工具分享

    Java之JVM监控工具分享 JVM的基本知识常用的也就是类加载机制,内存区域.分配.OOM,GC,JVM参数调优 几个链接自己看: 内存区域&类加载机制 分配策略&垃圾回收算法.收集 ...

  6. Java内存泄露监控工具:JVM监控工具介绍

    本文将对JVM监控工具jstack, jconsole, jinfo, jmap, jdb, jstat进行详细的介绍,具体内容请看下文 Sun JDK监控和故障处理工具 名称 主要作用 jps JV ...

  7. Java JVM监控工具JConsole简介

    Java JVM监控工具JConsole简介 jconsole命令 功能:打开java监视管理控制台 方法: jconsole [选项1] [选项2] …… [选项n] 常用选项: -help     ...

  8. 常见JVM监控工具用法介绍

    VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力.所有这些都是免费的!它囊括的命令行工具包括jps,jstat,jmap,jinfo,jstack,JConso ...

  9. JVM监控工具用法指导

    JVM监控工具用法指导 2010-09-27 15:39 dolphin-ygj javaeye.com 字号:T | T 通过JVM监控工具的使用可以及时发现问题,剔除安全隐患,这里向大家描述一下常 ...

随机推荐

  1. 搭建docker+k8s踩过的坑

    问题一: # yum install -y etcd kubernetes Error: docker-ce-cli conflicts with :docker--.gitb2f74b2.el7.c ...

  2. 一、doT.js使用笔记

    一.赋值https://www.jianshu.com/p/19156f9fac1e <!DOCTYPE html> <html> <head> <meta ...

  3. a标签前端下载火狐兼容和笔记

    1.a标签实现前端下载的谷歌兼容 我们都知道,文件下载的一种实现方案就是后端返回文件流,然后前端进行生成a标签并触发点击来下载.但是在火狐浏览器的时候,需要注意一些兼容性问题.原因是火狐的同源策略.官 ...

  4. WPF 样式Style

    一:样式基础 如果我们的程序有三个这样的按键,一般我们会这样写 <StackPanel> <!--按键的背景色为Azure蔚蓝色背景色为Coral珊瑚色字体为Arial加粗字体大小为 ...

  5. 【bzoj2300】【Luogu P2521】 [HAOI2011]防线修建 动态凸包,平衡树,Set

    一句话题意:给你一个凸包,每次可以插入一个点或者询问周长. 动态凸包裸题嘛,用\(Set\)实现.最初每个点坐标做乘三处理,便于取初始三角形的重心作为凸包判定原点. #include <bits ...

  6. day_06 猜年龄游戏,三级菜单 ,求1 - 2 + 3 - 4 + 5...99的所有数的和(课后作业)

    1.猜年龄游戏: 要求: 允许用户最多尝试3次 每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序 如果猜对了,有三次选择奖励 ...

  7. 【NOIP2016提高A组模拟8.17】(雅礼联考day1)总结

    考的还ok,暴力分很多,但有点意外的错误. 第一题找规律的题目,推了好久.100分 第二题dp,没想到. 第三题树状数组.比赛上打了个分段,准备拿60分,因为时间不够,没有对拍,其中有分段的20分莫名 ...

  8. 【NOIP2016提高A组模拟8.15】Throw

    题目 分析 首先对于一个状态(a,b,c),假定a<=b<=c: 现在考虑一下这个状态,的转移方案: \[1,中间向两边跳(a,b,c)-->(a*2-b,a,c).(a,b,c)- ...

  9. 【leetcode】1191. K-Concatenation Maximum Sum

    题目如下: Given an integer array arr and an integer k, modify the array by repeating it k times. For exa ...

  10. smarty笔记

    smarty 笔记display():把html包含进来然后用正则匹配php变量把匹配好的页面重新保存inclue载入刚才的保存的页面 1.smarty原理2.smarty安装3.smarty模板设计 ...