GC 垃圾回收机制

时间:2021-04-10 03:42:03

主要问题
gc 有哪些垃圾回收算法?

标记清除算法 直接标记清除 效率不高 空间产生大量碎片

标记-整理算法
不同于针对新生代的复制算法,针对老年代的特点,创建该算法。主要是把存活对象移到内存的一端。
将长时间不用的对象 去除


复制算法 把空间分成俩块 每次只对其中一块进行GC 当内存使用完时 将存活对象复制到另一块上 没必要 1 : 1 划分
会造成空间利用率低下。
针对新生代的复制算法
因为大多数新生代对象都不会熬过第一次 GC
采用一种分配担保策略:多出来的对象直接进入老年代。

分代回收
根据存活对象划分几块内存区,一般是分为新生代和老年代。
然后根据各个年代的特点制定相应的回收算法。

新生代
每次垃圾回收都有大量对象死去,只有少量存活,选用复制算法比较合理。


老年代
老年代中对象存活率较高、没有额外的空间分配对它进行担保。
所以必须使用 标记 —— 清除 或者 标记 —— 整理 算法回收。


垃圾回收器
(收集算法)是内存回收的理论,而垃圾回收器是内存回收的实践。如果两个收集器之间存在(连线)说明他们之间可以搭配使用