前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java 虚拟机原理】垃圾回收算法( Java VisualVM 工具 | 安装 Visual GC 插件 | 使用 Java VisualVM 分析 GC 内存 )

【Java 虚拟机原理】垃圾回收算法( Java VisualVM 工具 | 安装 Visual GC 插件 | 使用 Java VisualVM 分析 GC 内存 )

作者头像
韩曙亮
发布2023-03-29 16:26:21
5360
发布2023-03-29 16:26:21
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、Java VisualVM 工具安装 Visual GC 插件


使用

代码语言:javascript
复制
jvisualvm

命令 , 打开 Java VisualVM 工具 ,

在这里插入图片描述
在这里插入图片描述

在弹出的 " 插件 " 对话框中 , 选择安装 " Visual GC " 插件 ,

在这里插入图片描述
在这里插入图片描述

点击 " 安装 " 按钮 , 弹出如下界面 , 点击 " 下一步 " 按钮 , 继续向后执行 ;

在这里插入图片描述
在这里插入图片描述

选择 " 我接受所有许可证协议中的条款(A) " 选项 , 点击 " 安装 " 按钮 ;

在这里插入图片描述
在这里插入图片描述

之后会很快安装完毕 , 插件安装完毕后 , 如下显示 , 点击 " 完成 " 按钮 , Visual GC 插件 安装完成 ;

选择
选择

在 Java VisualVM 工具 中 , 点击 IntelliJ IDEA 查看该进程的 GC 情况 , 选择 Visual GC 选项卡 , 即可查看内存细节 , 如 : 元空间 Metaspace , 老年代 Old Gen , 年轻代中的 Eden Space 区域 , Survivor 0 / 1 区域 ;

在这里插入图片描述
在这里插入图片描述

二、使用 Java VisualVM 分析 GC 内存


分析 GC 时间 与 Eden Space 区域 内存占用 , 每次 GC 时 , Eden Space 区域 内存使用就变小 , 将其中的对象都丢到了 Survivor 0 或 Survivor 1 区域中 ;

在这里插入图片描述
在这里插入图片描述

分析 GC 时间 与 Survivor 0 和 Survivor 1 区域的内存使用情况 , 每次 GC 时 , 清空一个区域 , 将数据都拷贝到另一个区域 , 这是垃圾回收算法中的 复制算法 ;

在这里插入图片描述
在这里插入图片描述

每次 GC 垃圾回收 , 对象的 分代年龄 都会 +1 , 当分代年龄到达一定数量 , 该对象就被判定为永生对象 , 同时将永生对象放到 老年区 , 老年区的内存也是缓慢增加 ;

在这里插入图片描述
在这里插入图片描述

一旦这几个内存区域全部装满 , 就会出现 OOM 异常 ; 左侧的 Old Gen 是老年代 , 右侧的 Eden + Survivor 0 + Survivor 1 是年轻代区域 ;

在这里插入图片描述
在这里插入图片描述

在 年轻代 内存 中 , minor GC 垃圾回收非常频繁 , 每次都要针对年轻代中的 对象 进行 GC Root 可达性分析 , 如果不可达 , 直接回收 , 如果可达 , 分代年龄 + 1 , 分代年龄到达 15 后 转入 老年代 ;

在 老年代 内存 中 , full GC 垃圾回收 , 不是很频繁 , 每次对 永生对象 进行 GC Root 可达性分析 , 不可达的对象直接回收 ;

如果一次创建一个大对象 , 则直接放入老年代中 , 因为大对象需要大块内存 , 在年轻代中 , 不适合操作大块内存 , 有很多内存碎片 ;

如果 年轻代 , 老年代 , 内存区域用完 , 新对象 创建后没有足够的内存存放 , 则出现 OOM ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、Java VisualVM 工具安装 Visual GC 插件
  • 二、使用 Java VisualVM 分析 GC 内存
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档