how to find a garbage ?
- reference count(引用计数)
- root searching (根搜索算法(可达性算法))
引用计数没办法解决循环引用
因此 jdk使用可达性算法
清除垃圾的算法有下面几种
标记清除, 直接打上一个 标记,过段时间清除
复制算法(copying),分出一半的内存 复制有用的数据到另外一半,没用的数据在原来那一半被清除(内存浪费,只能用一半的空间)
mark-compact: 标记压缩
先打上没用的标记,然后移动有用的数据把没用的数据覆盖掉