Java垃圾收集背后的理论和算法

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我在很多地方阅读,但没有找到一个我可以学习的地方:

什么是Java垃圾收集的全部内容?

它是如何实现的?

何时以及如何调用?

为了回收内存,如果遵循什么算法?

提问于
用户回答回答于

答案的简短版本是:

什么是Java垃圾收集的全部内容?

GC是内存管理机制,系统(本例中为JVM)负责自动回收不再使用的内存。

它是如何实现的?

有多种方式来实现它。一个简单的描述是,每个分配的内存都被跟踪。系统会定期检查分配的部分,以查看程序的任何部分(变量)是否仍然可以到达内存。任何无法访问的内存都会被回收。

何时以及如何调用?

这也是由实施决定的。Java中唯一的保证是在引发OutOfMemoryError之前,系统将尝试回收内存。我希望大多数GC实现也会在向底层操作系统请求更多内存之前尝试进行收集。通常会有后台线程处理运行收集器。

为了回收内存,如果遵循什么算法?

有几种可能的。看看其他人发布的文章作为其出发点。

扫码关注云+社区