1. 产生原因
对象从根部开始不可达。
2. 几种方式
a.标记回收:
缺点是
因为要对所有相关联的对象进行计数,并且在其中一个消亡等的时候对所有关联的进行加1减1操作,耗费大量操作。
在循环引用的时候会发生问题。
b.复制回收:
缺点是需要运行时内存的2倍,每次都会有一半的区域用来等待下次的复制回收,浪费内存。并且因为要全部复制,浪费操作。
在复制的时候会消耗大量cpu,程序停滞等问题。
ca.分代复制:
原理
在一次次的回收周期中,依然存活的对象会被复制到长寿命的区域。 对于长寿命的区域,进行回收的周期比较长。 这样,只需要经常回收新生区,偶尔回收成熟区等,降低了消耗提高了效率。
对象从根部开始不可达。
2. 几种方式
a.标记回收:
缺点是
因为要对所有相关联的对象进行计数,并且在其中一个消亡等的时候对所有关联的进行加1减1操作,耗费大量操作。
在循环引用的时候会发生问题。
b.复制回收:
缺点是需要运行时内存的2倍,每次都会有一半的区域用来等待下次的复制回收,浪费内存。并且因为要全部复制,浪费操作。
在复制的时候会消耗大量cpu,程序停滞等问题。
ca.分代复制:
原理
在一次次的回收周期中,依然存活的对象会被复制到长寿命的区域。 对于长寿命的区域,进行回收的周期比较长。 这样,只需要经常回收新生区,偶尔回收成熟区等,降低了消耗提高了效率。