1、jvm判断一个对象是否存活
(1)引用计数算法:给对象中添加一个计数器,
每当有引用它时计数器就加一;
当引用失效时计数器就减一;
任何时刻计数器为0的对象就不能在使用;
(2)可达性分析算法:通过一系列成为“GC ROOT”的对象做为起点,
从这些节点进行向下搜索,搜索所走过的路径成为“引用链”,
当一个对象到“GC ROOT”对象没有任何的引用链相连,就判断对象
可以被回收;
2、垃圾回收的算法
(1)标记-清除算法:首先标记所有需要回收的对象,标记完以后统一回收所有
标记的对象;
(2)复制算法:将内存安装容量分为大小相等的两块,每次使用一块,当回收的
时候,将存活的对象复制到使用的内存中,清除已使用过的内存;
(3)分带收集算法:将内存划分为好几块(新生代和老年代),各个块采用最适用的方法;
(4)标记-整理算法:与标记-清除算法一样