Java垃圾回收背后的理论和算法
2022-09-03 02:19:21
我在很多地方读过书,但没有找到一个可以了解的地方:
什么是Java垃圾回收?
它是如何实现的?
何时以及如何调用它?
为了回收内存,如果遵循什么算法?
总之,关于它的一切都:)
固定!!!
我在很多地方读过书,但没有找到一个可以了解的地方:
什么是Java垃圾回收?
它是如何实现的?
何时以及如何调用它?
为了回收内存,如果遵循什么算法?
总之,关于它的一切都:)
固定!!!
答案的简短版本是:
什么是Java垃圾回收?
GC 是一种内存管理机制,其中系统(在本例中为 JVM)负责自动回收不再使用的内存。
它是如何实现的?
有多种方法可以实现它。一个简单的描述是,分配的每一段内存都会被跟踪。系统定期检查分配的片段,以查看程序的任何部分(变量)是否仍然可以到达内存。任何无法访问的内存都将被回收。
何时以及如何调用它?
这也留给实现。在Java中,唯一的保证是,在抛出一个 OutOfMemoryError 之前,系统将尝试回收内存。我预计大多数GC实现在向底层操作系统请求更多内存之前也会尝试进行收集。通常,将有一个后台线程来处理运行收集器。
为了回收内存,如果遵循什么算法?
有几种可能的方法。看看其他人发布的文章作为起点。