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

2022-09-03 02:19:21

我在很多地方读过书,但没有找到一个可以了解的地方:

什么是Java垃圾回收?

它是如何实现的?

何时以及如何调用它?

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

总之,关于它的一切都:)

固定!!!

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


答案 1

答案的简短版本是:

什么是Java垃圾回收?

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

它是如何实现的?

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

何时以及如何调用它?

这也留给实现。在Java中,唯一的保证是,在抛出一个 OutOfMemoryError 之前,系统将尝试回收内存。我预计大多数GC实现在向底层操作系统请求更多内存之前也会尝试进行收集。通常,将有一个后台线程来处理运行收集器。

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

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


答案 2

垃圾回收的维基百科条目涵盖了您的所有问题:

http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)