Day357.JVM监控及诊断工具-GUI -JVM
Posted 阿昌喜欢吃黄桃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day357.JVM监控及诊断工具-GUI -JVM相关的知识,希望对你有一定的参考价值。
JVM监控及诊断工具-GUI
实际中,你下面有1-2款会用即可
一、工具概述
二、JConsole
了解
1、基本概述
2、启动
- 在jdk安装目录中找到jconsole.exe,双击该可执行文件就可以
- 打开DOS窗口,直接输入jconsole就可以了
3、三种连接方式
①Local
使用JConsole连接一个正在本地系统运行的JVM,并且执行程序的和运行JConsole的需要是同一个用户。JConsole使用文件系统的授权通过RMI连接起链接到平台的MBean的服务器上。这种从本地连接的监控能力只有Sun的JDK具有。
注意:本地连接要求 启动jconsole的用户 和 运行当前程序的用户 是同一个用户
具体操作如下:
1、在DOS窗口中输入jconsole
2、在控制台上填写相关信息
3、选择“不安全的连接”
4、进入控制台页面
②、Remote
使用下面的URL通过RMI连接器连接到一个JMX代理,service:jmx:rmi:///jndi/rmi://hostName:portNum/jmxrmi。JConsole为建立连接,需要在环境变量中设置mx.remote.credentials来指定用户名和密码,从而进行授权。
③Advanced
使用一个特殊的URL连接JMX代理。一般情况使用自己定制的连接器而不是RMI提供的连接器来连接JMX代理,或者是一个使用JDK1.4的实现了JMX和JMX Rmote的应用
4、主要作用
1、概览
2、内存
3、根据线程检测死锁
4、线程
5、VM 概要
三、Visual VM
掌握
jvisualvm和visual vm的区别:
visual vm是单独下载的工具,然后将visual vm结合到jdk中就变成了jvisualvm,仅仅是添加了一个j而已,这个j应该是java的用处,所以说jvisualvm其实就是visual vm
1、基本概述
使用:
1、在jdk安装目录中找到jvisualvm.exe,然后双击执行即可
2、打开DOS窗口,输入jvisualvm就可以打开该软件
2、插件的安装
首先在IDEA中搜索VisualVM Launcher插件
并安装:
2、重启IDEA,然后配置该插件
3、使用两种方式来运行程序
4、运行效果
还是打开jvisualvm界面,只是不需要我们手动打开jvisualvm而已
3、连接方式
4、主要功能
①生成/读取堆内存快照
一、生成堆内存快照
1、方式1:
2、方式2:
注意:
生成堆内存快照如下图:
这些快照存储在内存中,当线程停止的时候快照就会丢失,如果还想利用,可以将快照进行另存为操作,如下图:
二、装入堆内存快照
②查看JVM参数和系统属性
③查看运行中的虚拟机进程
④生成/读取线程快照
一、生成线程快照
1、方式1:
2、方式2:
注意:
生成线程快照如下图:
这些快照存储在内存中,当线程停止的时候快照就会丢失,如果还想利用,可以将快照进行另存为操作,如下图:
二、装入线程快照
⑤程序资源的实时监控
⑥其他功能
四、Eclipse MAT
主要分析堆内存dump文件,找出内存泄露
问题
1、基本概述
注意:如果单独使用,那么解压即可用,不需要安装即可
2、获取堆dump文件
①dump文件内存
②两点说明
③获取dump文件
3、分析堆dump文件
①histogram
展示了各个类的实例数目以及这些实例的Shallow heap或者Retained heap的总和
图标:
具体内容:
②thread overview
图标:
具体信息:
③获得对象互相引用的关系
- with outgoing references
变量被外部的引用链
图示:
结果:
- with incoming references
这个变量被谁引用了
图示:
结果:
④浅堆与深堆
- shallow heap,浅堆
不算引用类型的大小,就是只算基本数据类型大小
对象头代表根据类创建的对象的对象头,还有对象的大小不是可能向8字节对齐,而是就向8字节对齐
- retained heap,深堆
注意:
当前深堆大小 = 当前对象的浅堆大小 + 对象中所包含对象的深堆大小
- 补充:对象实际大小
- A的浅堆大小是A他自己
- 浅堆不包含引用空间
- A的深堆大小是A+D
- 深堆大小包含浅堆大小 加上 只有被A所指向的引用对象大小(就是上面的D,因为C被A/B同时指向),所以不算
- A的实际对象大小是ACD
- 实际对象大小是包含A本身,且他能可达触及到的所有对象大小,A本身+指向的C和D
- 练习
A
- 浅堆:A
- 深堆:A
- 对象实际大小:A
B
- 浅堆:B
- 深堆:B C
- 对象实际大小: B C D
明天继续!!!
以上是关于Day357.JVM监控及诊断工具-GUI -JVM的主要内容,如果未能解决你的问题,请参考以下文章