一、垃圾回收标记方法(找到垃圾)
1、引用计数标记:无法解决循环引用或相互引用的问题
2、可达性算法:解决上述问题
可作为GC root的对象:(我没太想清楚为啥是以下四种那个情况)
- a. 虚拟机栈(栈帧中的本地变量表)中引用的对象。
- b. 方法区中类静态属性引用的对象。
- c. 方法区中常量引用的对象。
- d. 本地方法栈中 JNI(Native方法)引用的对象
二、四种引用:
- 强引用:永远不会回收
- 软引用:内存溢出回收
- 弱引用:一定会回收
- 虚引用:没用,唯一作用是被回收时收到系统通知
三、回收标记垃圾方法(清除垃圾)
- 标记清除算法:(缺点)碎片内存空间
- 标记整理算法:(缺点)需要内存中移动对象,也挺慢
- 复制算法:(缺点)空间减半
- 分析收集算法(JVM实际采用的方法):young区(复制算法)+old区(标记清除或标记整理)思考:在这里复制算法比标记算法的优势在哪儿