- 引用计数法
每个对象都有一个私有的引用计数属性,新增一个引用计数+1,释放一个引用时计数-1,引用计数为0则表示对象可被回收。
缺点:
- 无法解决循环引用问题:A->B,B->C,C->A 引用计数分别都是1,永远也得不到释放
- 浪费CPU性能:每次引用都需要计算引用数。
- 可达性分析(java使用)
从GC Roots向下搜索,如果一个对象和GC Roots之间没有可达路径,则该对象是不可达的。
不可达对象不一定会成为可回收对象,被判定不可达的对象成为可回收对象至少要经历两次标记过程,如果两次标记过程中仍然没有逃脱成为可回收对象的可能,则基本上就成为可回收对象了。
网友评论