我在很多地方阅读过,但没有找到一个可以学习以下内容的地方:
什么是Java垃圾回收?
它如何实现?
何时以及如何调用?
它遵循哪些算法以回收内存?
简单来说,关于它的一切 :)
修正!!!
我在很多地方阅读过,但没有找到一个可以学习以下内容的地方:
什么是Java垃圾回收?
它如何实现?
何时以及如何调用?
它遵循哪些算法以回收内存?
简单来说,关于它的一切 :)
修正!!!
简短回答如下:
Java垃圾回收是什么?
GC是一种内存管理机制,其中系统(在这种情况下是JVM)负责自动回收不再使用的内存。
它是如何实现的?
有多种实现方式。简单来说,每个分配的内存片段都会被跟踪。定期地,系统检查已分配的片段,看看程序的哪些部分(变量)仍然可以访问该内存。任何无法访问的内存都会被回收。
什么时候以及如何调用它?
这也取决于实现方式。在Java中,您唯一可以保证的是,在抛出OutOfMemoryError之前,系统将尝试回收内存。我希望大多数GC实现在请求底层操作系统获取更多内存之前也会尝试进行收集。通常会有一个后台线程来处理运行收集器的任务。
为了回收内存,Java GC采用了什么算法?
有几种可能的算法。请参考其他人发布的文章作为起点。
http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)