给使用的每个对象添加一个计数器,每次引用,计数器加1,失去引用,计数器减1,那么当计数器一段时间保持为0的时候,我们认为这个对象就可以被回收 缺点:当两个对象相互引用的时候,由于是两个对象彼此相互引用,已经没有其他引用存在,此时计数器都是1,但是并不会被回收
程序把我们所有的引用关系看作一张图,从一个节点的GC ROOT开始分析引用,找到引用,然后继续寻找该引用节点的引用,直到找到所有的引用,那么没有被引用的节点,就是无用的节点
分为标记和清除两个阶段处理内存中的对象,效率不高
将可用内存按照容量分为大小相同的两块,使用的时候只使用其中一块区域,当该区域内存满了的时候,就将该块内容中活着的对象复制到另外一块容量区域,然后清理之前用过的那块内存空间,彼此交换两块内存区,完成垃圾收集
在标记-清除的基础上进行优化,将活着的对象压缩到内存的一端,然后清理除该端边界之外的内存区域
将整个内存空间分为N个连续不同的内存区域,每个单独使用,独立回收,小颗粒度控制
吞度量(Throughput),吞吐量越大越好 停顿时间(pasue time),暂停时间越短越好