目录
第一步:安装jvisualvm
第二步:安装VisualvmGc插件
方式一:jvisualvm工具直接下载安装
方式二:去官网下载导入安装
总结
第三步:idea安装VisualvM Launcher插件
第四步:演示young中eden、s0、s1垃圾回收过程
1、配置jvm堆大小
2、启动一个项目
3、打开jvisualvm
第五步:jvisualvm性能监控可视化工具使用
1、菜单使用介绍
1.1、概述
1.2、监控
1.3、线程
1.4、抽样器
第六步:总结
第一步:安装jvisualvm
jvisualvm在安装完jdk的时候就已经存在了,自动安装在jdk安装目录bin下面。windows可以到安装目录下直接执行exe文件。
然后双击执行,就自动打开界面:
为了分析young区内存分布与回收机制,我们还需要一个插件:VisualvmGc。
第二步:安装VisualvmGc插件
有两个方式:
方式一:jvisualvm工具直接下载安装
我们打开jvisualvm工具,然后我们可以找到工具菜单,选择插件,弹出配置框。
然后点击“可用插件”菜单,找到我们需要插件,勾选上之后,继续安装。
等待安装完成就可以,然后我们工具里面就可以看到了。
方式二:去官网下载导入安装
官网:VisualVM: Plugins Centers
选择一个版本,然后去找到VisualvmGc插件;如图:
这里我们可以看他有很多插件供我们使用。比如常用的:Jconsole
下载之后保存在本地,供后面安装到 jvisualvm使用。
我们打开jvisualvm工具,然后我们可以找到工具菜单,选择插件,弹出配置框
再选择已下载菜单
就可以导入我们上面官网下载的插件进行安装。 下面与上面一步是一样的操作。
总结
这里我们发现jdk自带很多插件供我们使用,我们可以根据自己需要安装对应的组件;非常方便。
至此:我们工具安装好了,但是为了演示内存分布,我们需要在idea配置安装一下对应插件。
第三步:idea安装VisualvM Launcher插件
1、首先打开idea,找出插件安装菜单Plugins,然后搜索插件VisualvM Launcher,进行安装。
安装好之后,我们可以看到idea已安装的组件菜单,然后点击我们安装好的插件,进行配置
配置我们的JVisualVM.exe文件路径,和jdk安装的路径
安装好之后,到此基础环境配置就结束了。
然后我们可以看见我们idea多出两个启动按钮:
后面我们测试就可以用它的。
第四步:演示young中eden、s0、s1垃圾回收过程
1、配置jvm堆大小
这个方便我们在本地环境模拟测试。
我们在idea中设置JVM堆内存大小为300m,eden区和s0、s1为8:1:1(默认老年代和新生代为2:1)
-Xms300m -Xmx300m -XX:SurvivorRatio=8
2、启动一个项目
随便一个demo项目都可以,可以自己写一个循环方法,线程睡眠等等都可以。
3、打开jvisualvm
然后点击VisualvmGc
然后我们可以看到这几个分区:
我们可以看到s0,s1和eden区此时他们的内存变化,以及内存存储分布。
刚开始进来我们看到eden区的内存在不断的增加,s0内存可能没有,可能有(项目刚启动是没有的,看项目加载的资源是否会存在s0)。s1的内存一定是没有的 。
但等一段时间,eden区满了之后,就会里面清理一次,然后s0清空,s1增加了内存
再当eden区满了之后,又开始一轮交替,eden区清空,s1清空,剩余放在s0区。你会发现在没有其他操作清空下,他一直以此类推进行。
当我们收到操作垃圾回收之后,我们发现:
全部被回收,然后先使用eden区,等eden区满了之后s0才会存放垃圾。
第五步:jvisualvm性能监控可视化工具使用
1、菜单使用介绍
1.1、概述
我们可以看到我们配置堆内存大小
1.2、监控
这里我们可以右上角有几个可选菜单,用来查看面板的,以及可以进行收到垃圾回收,以及堆dump查看与下载
比如我们点击堆dump可以看到堆内存的详细情况
以及右击可以下载分析堆dump文件:
同时还支持与另一个堆文件比较
可以通过类分析发现这两个堆中那个类占的内存越来越多,没有被释放,就可能哪个造成的oom。
1.3、线程
我们在打开线程菜单,可以看到所有运行的线程以及线程的dump文件
同样,我们可以下载线程的dump文件。
我们点击右上角的“线程Dump”按钮,可以看到如下线程的详细信息。
下载堆内存之后从而可以检查死锁线程。
1.4、抽样器
我们可以打开到抽样的按钮器,里面有
cpu的抽样和内存抽样。
1、cpu抽样,我们点击之后,就可以实时运行,里面可以看到cpu样例和线程cpu时间实时分析。
2、内存抽样同样也是,点击之后进行分析。同样有两个部分:
第六步:总结
至此我们的 JVisualVM基本使用以及young分区模拟就结束完了,这里只是介绍本地工程,我们远程服务器一样是可以,只要链接远程服务器,就可以进行监控。
这里配置链接我们远程服务器就可以了。
后续我们将具体使用这个工具以及其他插件进行项目实战中各种场景分析。
JVM-java对象内存分布(二)_平凡之路无尽路的博客-CSDN博客
JVM GC ROOT分析与垃圾收集器原理分析(四)_平凡之路无尽路的博客-CSDN博客