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

day*_*mer 18 java garbage-collection

我在很多地方看过,但找不到我可以了解的地方:

什么是Java垃圾收集?

它是如何实现的?

何时以及如何调用?

如果以下是什么算法来回收内存?

总之一切都是关于:)

固定!!!

一篇非常好的文章:http://www.artima.com/insidejvm/ed2/gcP.html

Tof*_*eer 11

答案的最短版本是:

什么是Java垃圾收集?

GC是一种内存管理机制,系统(在这种情况下为JVM)负责自动回收不再使用的内存.

它是如何实现的?

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

何时以及如何调用?

这也取决于实施.您在Java中唯一的保证是,在抛出OutOfMemoryError之前,系统将尝试回收内存.我希望大多数GC实现在尝试为底层操作系统提供更多内存之前也尝试进行集合.通常会有一个后台线程来处理运行收集器.

如果以下是什么算法来回收内存?

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