我是Java的新手,我想知道HotSpot JVM垃圾收集器的不同版本的结构以及垃圾收集过程的原理(我主要对Java 1.6、1.7和1.8中使用的那些感兴趣),但是不幸的是,我找不到一个涵盖Java主题的广泛资源。
Java中有多个垃圾收集器。但是最受欢迎的一种是“伊甸园”和老化模型。
当然,现在大多数人都在运行G1垃圾收集器,即使是流行的模型也常常无法描述实际发生的情况。不必太担心这种不准确性,在很多版本中,它实际上都是默认值。
垃圾回收大约涉及两个主要任务,即回收内存和压缩孔。
在旧的伊甸园风格的垃圾收集器中,想法是
因此,“ eden”空间是堆的一部分,其中尚未检查对象以查看JVM程序执行线程是否仍可访问该对象。幸存者空间是对象被复制到的地方(复制允许重新分配地址,从而进行压缩),而其他更永久的空间则表明对象的寿命更长。
现在,借助新的G1垃圾收集器,您实际上可以拥有成千上万的微型堆,并且根据堆中包含的对象的生存能力来标记整个堆。压缩有时是通过组合两个“堆块”来完成的。但是,由于堆要小得多,因此通常只是丢弃而不是压缩堆(由于考虑到较少的对象时,堆中所有对象无法访问的可能性较高)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句