文章目录

  • 一、Java VisualVM 工具安装 Visual GC 插件
  • 二、使用 Java VisualVM 分析 GC 内存

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


使用

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 ;

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

  1. 了解java虚拟机mdash;垃圾回收算法(5)

    引用计数器法(Reference Counting) 引用计数器的实现很简单,对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当引用失效时,引用计数器减1.只要对象A的引用计数器的 ...

  2. java虚拟机多久触发垃圾回收_每日一问:讲讲 Java 虚拟机的垃圾回收

    昨天我们用比较精简的文字讲了 Java 虚拟机结构,没看过的可以直接从这里查看: 每日一问:你了解 Java 虚拟机结构么? 今天我们必须来看看 Java 虚拟机的垃圾回收算法是怎样的.不过在开始之前 ...

  3. 学习笔记【Java 虚拟机②】垃圾回收

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 总目录 学习笔记[Java 虚拟机①]内存结构 学习笔记[Java 虚拟机②]垃圾回收 学习笔记[Java ...

  4. Java虚拟机之垃圾回收详解一

    Java虚拟机之垃圾回收详解一 Java技术和JVM(Java虚拟机) 一.Java技术概述: Java是一门编程语言,是一种计算平台,是SUN公司于1995年首次发布.它是Java程序的技术基础,这 ...

  5. java虚拟机、垃圾回收、多线程

    虚拟机,我们都知道Java程序运行在虚拟机上,虚拟机又和操作系统打交道,最终通过二进制指令操纵电子电路运行.完成数据的读取,存储,运算和输出. 虚拟机在加载.class文件的时候,会在内存开辟一块区域 ...

  6. 浅析Java虚拟机的垃圾回收机制(GC)

    目录 一.垃圾回收机制(Garbage Collection) 二.对象回收的时机 引用计数法 可达性分析算法 三.垃圾回收算法 标记-清除算法 标记-复制算法 标记-整理算法 新生代.老年代.永久代 ...

  7. ReviewForJob——java虚拟机的垃圾回收策略(个人总结)

    理解jvm的垃圾回收策略,需要解决以下3个问题 问题1:哪些内存需要回收? 问题2:什么时候进行回收? 问题3:怎样来回收? [解决问题1]哪些内存需要回收? jvm的内存区域有5大块: 1)程序计数 ...

  8. 深入理解Java虚拟机——JVM垃圾回收机制和垃圾收集器详解

    一:概述 说起垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来.在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,顾名思义,垃圾回收就是释 ...

  9. java中的垃圾回收算法

    java中有四种垃圾回收算法,分别是: 标记清除法.标记整理法.复制算法.分代收集算法 1.标记清除法: 第一步:利用可达性去遍历内存,把存活对象和垃圾对象进行标记; 第二步:在遍历一遍,将所有标记的 ...

最新文章

  1. Openfiler之一:Openfiler的安装(转载)
  2. PHPer常见的面试题总结
  3. 通过virtualbox最小化安装centos 6.3后无法上网解决办法
  4. 最近用到的几种前后端交互方式
  5. windows phone 学习之页面导航和数据传递
  6. flume mysql hdfs_利用Flume将MySQL表数据准实时抽取到HDFS
  7. php和xml区别,php和XML
  8. matlab 变调器,关于变声变调的matlab设计 比较详细
  9. [导入]更新:让UpdatePanel支持上传文件
  10. LightOJ 1058 平行四边形的判断定理
  11. Prim算法实现最小生成树MST(java)
  12. MAC 升级 node.js 的快捷方法
  13. Android设备:外接扫码枪与系统软键盘问题
  14. 开篇:为什么开始写博客
  15. iOS远程真机之iTunes与iPhone的通信协议usbmuxd解析
  16. iOS 屏幕适配 X XR XS XSMax 尺寸
  17. 火狐浏览器50Linux32位,火狐浏览器32位完整离线安装包下载
  18. Python+appium app自动化
  19. 微信小程序如何实现搜索框的防抖功能
  20. C语言基础练习-输入球体半径,计算球体表面积和体积

热门文章

  1. java基础知识总结,绝对经典
  2. LightOJ 1205 Palindromic Numbers
  3. Buffer Cache Hit Ratio
  4. 【005】◀▶ C#学习笔记(四)(集合)
  5. RAID,LVM创建
  6. DeepStream开发日志
  7. Java程序(类的抽象与封装)
  8. 文本超出隐藏 综合整理
  9. [开源].NET数据库访问框架Chloe.ORM
  10. 原生js封装二级城市下拉列表