堆和方法区的内存回收具有不确定性,因此垃圾收集器在回收堆和方法区内存的时候花了一点心思.
1 Java堆内存的回收
1.1 判定回收的对象
在对堆进行对象回收之前,首先要判断哪些是无效对象即一个对象不被任何对象或变量引用...,那么在堆中就会有一个代表该类的对象:java.lang.Class.这个对象在类被加载进方法区的时候创建,在方法区中该类被删除时清除.
4 垃圾收集算法
知道了判定方法,也就知道了垃圾收集器会清除哪些数据...接下来就使用Survior2+Eden进行内存分配
通过这种方式,只需要浪费10%的内存空间即可实现带有压缩功能的垃圾收集方法,避免了内存碎片的问题.
4.2.3 分配担保
准备为一个对象分配内存时,发现此时...标记-整理算法
分析
这是一种老年代垃圾收集算法....只要垃圾收集器工作,无论内存是否足够,弱引用所关联的对象都会被回收.
弱引用通过WeakReference类实现.
虚引用
也叫幽灵(幻影)引用,最弱的引用关系.