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