1.GC算法 2.G1算法
GC算法(keywords ,可达性分析,GCRoot向下搜索)
使用有向图将引用类型标记出来,使用GCRoot当做根节点,当GCRoot有指向的时候说明有引用(可达性分析)
销毁调用 finalize->放入F-Queue (只有一次)
<1>标记清除算法
在每一个大块空间当没有引用的时候进行删除,容易造成内存小碎片.
<2>复制算法
Edeson:Survive:Survive=8:1:1
创建一半空间供于使用,剩下一半空间供于清除后复制到另外一边使用(新生代)
<3>标记整理算法
清除的时候向一端移动清除 (老年代)
对象分配算法
<1>大对象进入老年代
<2>长期的对象进入老年代
<3>时间过长达到进入老年代
Tip:动态分配空间担保(新生代缺少的动态分配空间将由老年代进行分配空间担保)
回收的标准:
<1>给对象赋予了空值.
<2>给对象赋予了新值,重新分配了空间.
内存泄漏的情况
<1>在堆中申请的空间未被释放.(可解决)
<2>对象不使用了但仍然在内存中保留着.
G1内存回收方法???