Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java垃圾收集背后的理论与算法_Java_Garbage Collection - Fatal编程技术网

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

Java垃圾收集背后的理论与算法,java,garbage-collection,Java,Garbage Collection,我在很多地方阅读,但没有找到一个地方可以了解: java垃圾收集是关于什么的 它是如何实施的 什么时候,怎样称呼它 如果为了回收内存而遵循什么算法 简言之,关于它的一切:) 已修复 一篇非常好的文章:关于垃圾收集的维基百科条目涵盖了您的所有问题: Sun^H^H^HOracle有关于这个主题的文档。答案的简短版本是: 什么是java垃圾收集 关于 GC是一种内存管理机制,系统(本例中为JVM)负责自动回收不再使用的内存 它是如何实施的 有多种方法可以实现它。一个简单的描述是跟踪分配的每一块内存。

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

java垃圾收集是关于什么的

它是如何实施的

什么时候,怎样称呼它

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

简言之,关于它的一切:)

已修复


一篇非常好的文章:

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


Sun^H^H^HOracle有关于这个主题的文档。

答案的简短版本是:

什么是java垃圾收集 关于

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

它是如何实施的

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

什么时候,怎样称呼它

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

如果遵循什么算法来 回收内存

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

。。。简言之,关于它的一切:)

如果你能访问一个好的图书馆,请查阅这本关于垃圾收集的优秀而全面的书:

Richard Jones和Rafael Lins,《垃圾收集:自动动态内存管理算法》,Wiley and Sons(1996),ISBN 0-471-94148-4


此外,这本书仍在印刷,并在至少一家著名的网上书店上市。四处逛逛。这是一款价格范围广泛的新产品,二手价格低至25美元。

关于GC如何在Java中工作的更好文章
正如Dan所提到的,垃圾收集技术使用标记和扫描算法


更多细节

我必须准备一个很长的答案,但这里有大量不同类型的GC算法和语义(没有双关语)。精彩链接+1:-)有用-感谢本书的参考!谢谢你的评论,我会看看我是否得到了一些好文章,并会用链接更新帖子