美文网首页JavaJava 核心技术
JVM垃圾回收引用计数法和根搜索算法

JVM垃圾回收引用计数法和根搜索算法

作者: 迦叶_金色的人生_荣耀而又辉煌 | 来源:发表于2020-12-13 07:42 被阅读0次

引用计数法(不推荐使用)

  • 可回收对象

a、没有被引用的对象:A
b、没有互相应用的对象:BCD

  • 缺陷

循环依赖对象不可回收:EF

ReferenceCountingGC objA = new ReferenceCountingGC();
ReferenceCountingGC objB = new ReferenceCountingGC();
objA.instance=objB;
objB.instance=objA;
objA=null;
objB=null;

根搜索算法(GCRoots,也叫可达性算法,不推荐直接使用)

  • 可回收对象

灰色背景部分

  • 可作为GCRoots的对象包括

(1). 虚拟机栈(栈帧中的局部变量区,也叫做局部变量表)中引用的对象。
(2). 方法区中的类静态属性引用的对象。
(3). 方法区中常量引用的对象。
(4). 本地方法栈中JNI(Native方法)引用的对象。

  • 为什么jvm不直接使用gc root去回收整个堆呢

因为效率太低了,我们99.99%的对象基本存活不到3s

根搜索算法代码演示

1.测试代码

// 加入list中
ArrayList<Object> jaryes = new ArrayList<Object>();
jaryes.add("jarye");
jaryes.add("test");
System.out.println("存储成功..");
/***暂停打印堆信息1***/
System.in.read();
// 引用内存地址变为空
jaryes = null;
System.out.println("jaryes变为null");
/***暂停打印堆信息2***/
System.in.read();
System.in.read();
System.out.println("end");

2.堆信息导入到Eclipse Memory Analyzer工具

  • 根节点信息


  • 堆信息1


  • 堆信息2


相关文章

  • JVM垃圾回收引用计数法和根搜索算法

    引用计数法(不推荐使用) 可回收对象 a、没有被引用的对象:Ab、没有互相应用的对象:BCD 缺陷 循环依赖对象不...

  • JVM垃圾回收器原理及使用介绍

    JVM垃圾回收器原理及使用介绍 垃圾收集基础 引用计数法(Reference Counting) 标记-清除算法(...

  • JVM(八)-垃圾回收机制与垃圾收集器

    JVM垃圾回收(GC)模型 垃圾判断算法 GC算法 垃圾收集器的实现和选择 垃圾判断算法 引用计数法(Refere...

  • JVM垃圾回收机制

    JVM垃圾回收机制 回收步骤 问题 垃圾标记算法 回收对象:堆中的对象 1.引用计数法 1.1 定义: 堆中的...

  • 每天一个知识点(6)--JVM-垃圾回收算法

    JVM进行垃圾回收需要确定哪些是垃圾对象,有两种确认方法: 引用计数法:如果一个对象被引用,则引用计数+1,反之-...

  • JVM垃圾回收

    一.什么样的需要回收 1.计数法:循环引用的问题不好解决 2.根搜索算法,根节点无法触达的对象,将被回收 - ...

  • jvm<一> 垃圾回收过程、g1、类加载过程

    jvm回收的步骤有2步: 查找:1)引用计数法引用计数法就是如果一个对象没有被任何引用指向,则可视之为垃圾。这种方...

  • java垃圾回收

    判断垃圾:引用计数法,根搜索法(可达性分析) 垃圾回收算法: Mark-Sweep(标记-清除)算法 Copyin...

  • Java的四种引用

    首先,Java的垃圾回收机制无论是通过引用计数算法判断对象的引用数量还是通过根搜索算法判断对象的引用链是否可达,判...

  • Javascript 引用计数法的原理和优缺点

    引用计数法是什么? 引用计数法是GC算法之一。GC算法是内存管理中,垃圾回收器完成垃圾回收,从查找垃圾、释放空间到...

网友评论

    本文标题:JVM垃圾回收引用计数法和根搜索算法

    本文链接:https://www.haomeiwen.com/subject/xfzhgktx.html