Java中如何实现高效的垃圾回收策略?
- 内容介绍
- 文章标签
- 相关推荐
本文共计5836个文字,预计阅读时间需要24分钟。
一、介绍前面已经介绍了Java的内存分区,本文将基于内存分区来介绍Java区域与其它语言的一个非常重要的机制:垃圾回收(GC)。
二、如何判断一个对象应该被回收有一个直观的判断方法:当对象没有任何引用指向它时,该对象应该被回收。
一、介绍前面已经介绍了 Java 的内存分区,本文将基于内存分区来介绍 Java 区别与其他语言一个很重要的机制 : 垃圾回收(GC)。
二、如何判断一个对象该被回收了有一个比较直观的想法就是:用一个引用计数器来记录该对象被引用的次数,多一个引用就+1,少一个就-1,当引用数等于 0 的时候就是要回收该对象了,很多语言都是用这个方法来实现,但是这个简单的想法无法解决的例子还是很多的,譬如:当我创建了一个 A 对象,A对象中引用了 B 对象,当我解除 对 A 对象都引用后,实际上我已经无法再找到 A ,但由于 A 和 B 互相引用,它们都引用数不是0,这样肯定是不合理的。
可达性分析算法通过 GC Roots 作为起始点进行搜索,能够到达到的对象都是存活的,不可达的对象可被回收。也是 java 所采用的策略。
本文共计5836个文字,预计阅读时间需要24分钟。
一、介绍前面已经介绍了Java的内存分区,本文将基于内存分区来介绍Java区域与其它语言的一个非常重要的机制:垃圾回收(GC)。
二、如何判断一个对象应该被回收有一个直观的判断方法:当对象没有任何引用指向它时,该对象应该被回收。
一、介绍前面已经介绍了 Java 的内存分区,本文将基于内存分区来介绍 Java 区别与其他语言一个很重要的机制 : 垃圾回收(GC)。
二、如何判断一个对象该被回收了有一个比较直观的想法就是:用一个引用计数器来记录该对象被引用的次数,多一个引用就+1,少一个就-1,当引用数等于 0 的时候就是要回收该对象了,很多语言都是用这个方法来实现,但是这个简单的想法无法解决的例子还是很多的,譬如:当我创建了一个 A 对象,A对象中引用了 B 对象,当我解除 对 A 对象都引用后,实际上我已经无法再找到 A ,但由于 A 和 B 互相引用,它们都引用数不是0,这样肯定是不合理的。
可达性分析算法通过 GC Roots 作为起始点进行搜索,能够到达到的对象都是存活的,不可达的对象可被回收。也是 java 所采用的策略。

