如何判断对象可以回收和垃圾回收算法

1.如何判断对象可以回收

2 可达性分析算法

Java 虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象
扫描堆中的对象,看是否能够沿着 GC Root对象 为起点的引用链找到该对象,找不到,表示可以
回收
哪些对象可以作为 GC Root ?

3垃圾回收算法

  • 1、标记清除(一般在老年代回收垃圾时可能会使用)
    定义: Mark Sweep
    优点:速度较快
    缺点:会产生碎片化空间

  • 2、标记整理(标记压缩)(一般在老年代回收垃圾时可能会使用)
    定义:Mark Comp
    优点:空间连续
    缺点:对象地址要重新移动,效率较慢

  • 3、复制算法(一般在新生代的回收垃圾使用)
    不会有内存碎片
    需要占用双倍内存空间

4、分带垃圾回收

在这里插入图片描述
对象首先分配在伊甸园区域
新生代空间不足时,触发 minor gc,伊甸园和 from 存活的对象使用 copy 复制到 to 中,存活的
对象年龄加 1并且交换 from to
minor gc 会引发 stop the world,暂停其它用户的线程,等垃圾回收结束,用户线程才恢复运行
当对象寿命超过阈值时,会晋升至老年代,最大寿命是15(4bit)
当老年代空间不足,会先尝试触发 minor gc,如果之后空间仍不足,那么触发 full gc,STW的时
间更长

猜你喜欢

转载自blog.csdn.net/u014496893/article/details/114603241