2、垃圾收集器与内存分配策略

1、判断对象是否已死

1.1 引用计数算法?

java没有用引用计数算法,难于解决对象间的相互引用问题。

1.2 可达性分析算法

通过GC Roots为起点,如果没有达到一个对象,则不可达。

可作为GC Roots的对象:
1)栈中的引用的对象。
2)方法区中类静态属性引用的对象。
3)方法区中常量引用的对象。
4)本地方法栈中JNI引用的对象。

1.3 再谈引用

分类:
1)强引用
2)软引用
3)弱引用
4)虚引用

1.4 回收方法区

回收方法区:废弃的常量和无用的类

2、垃圾回收算法

2.1 标记-清除算法

两阶段:标记和清除
有效率和碎片问题。

2.2 复制算法

只使用内存的半区,快速和不用考虑碎片问题。
代价是只能使用内存的一半。
新生代采用这种算法:8:1:1。

2.3 标记-整理算法

老年代采用这种算法。

2.4 分代回收算法

3、各种垃圾收集器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章