共计 505 个字符,预计需要花费 2 分钟才能阅读完成。
本文首发于 cartoon 的博客
转载请注明出处:https://cartoonyu.github.io/c…
怎么判断对象是否可以被回收
根搜索法
判断是否有 finalize 方法或是否进行过 finalize
- 满足上面判断条件直接回收
- 若不满足则进行筛选
- 执行对象的 finalize 方法,判断对象是否和 GC Roots 是否有直接或间接关联
引用计数法
- 每次引用计数加 1
- 回收时查看计数是否为 0
Java 中都有哪些引用类型
强引用
- 内存空间不足也不会回收
软引用
- 内存空间不足会回收该引用
弱引用
- 在垃圾回收期扫描时,不管内存是否不足都会回收引用
虚引用
- 在任何时候都可能被回收
说一下 JVM 有哪些垃圾回收算法
标记 - 清除
- 标记可回收对象进行清理
标记整理
- 标记可回收对象
- 将存活对象整理到连续内存空间,清除边界外内存
复制算法
- 将不可回收对象复制到另一内存空间中
- 清理原有内存空间
分代收集算法
- 根据对象存活周期不同划分内存块
- 垃圾回收机制根据代数不同回收对象
说一下 JVM 有哪些垃圾回收器
- serial
- parnew
- parallel Scavenge
- serial old
- parallel old
- cms
- G1
- 由于是初步接触 JVM,所以不是很了解 JVM 垃圾回收器的工作原理
正文完