我对Java相当陌生,我想了解不同版本的Java垃圾收集器的结构和垃圾收集过程的原则(我对Java1.6、1.7和1.8中使用的垃圾收集过程的原则很感兴趣),但不幸的是,我找不到一个广泛的源代码来讨论这个主题。
发布于 2014-09-03 08:07:44
Java中有多个垃圾收集器,但最流行的是"eden“和老化模型。
当然,现在大多数人都在运行G1垃圾收集器,即使是流行的模型也常常没有描述实际发生的事情。不要太担心不准确,对于相当多的发布来说,这是事实上的违约。
垃圾回收是两项主要任务,即回收内存和压缩孔。
有了伊甸园风格的垃圾收集器,他们的想法是
因此,"eden“空间是堆中尚未检查对象以查看它是否仍然可以被JVM程序执行线程访问的部分。幸存者空间是将对象复制到其中的地方(复制允许重新基于地址并因此进行压缩),而其他更永久的空间则表示一个寿命更长的对象。
现在,使用新的G1垃圾收集器,您实际上拥有了数以千计(到数百万)的迷你堆,整个堆是根据它包含的对象的生存性来标记的。压缩有时是通过组合两个“堆块”来完成的;然而,由于堆非常小,它们常常被丢弃而不是压缩(因为当需要考虑的对象较少时,堆中的所有对象都很难到达)。
发布于 2014-09-03 07:54:44
这个链接有点旧,但我希望它能有所帮助。
http://cs.williams.edu/~freund/cs434/hotspot-gc.pdf
也可能要检查一下
http://mechanical-sympathy.blogspot.com.br/2013/07/java-garbage-collection-distilled.html
上一篇文章帮助我很好地调整JVM中的各种内容,不管怎么说,这是一个很好的阅读。
https://stackoverflow.com/questions/25638855
复制相似问题