Java MaxtenuringReshold-它到底是如何工作的?
我们知道主内存域很少:年轻、终身(老一代)和永久Java MaxtenuringReshold-它到底是如何工作的?,java,garbage-collection,Java,Garbage Collection,我们知道主内存域很少:年轻、终身(老一代)和永久 年轻领域分为伊甸园和幸存者(两个) OldGen是用来保存物品的 MaxTenuringReshold可防止对象过早地最终复制到OldGen空间。这很清楚,也可以理解 但是它是如何工作的呢?垃圾回收器如何处理这些在MaxTenuringThreshold之前仍然存在的对象,以及以何种方式处理这些对象?他们在哪里 正在将对象复制回幸存者空间以进行垃圾收集。。或者它是以其他方式发生的?Java堆中的每个对象都有一个标头,垃圾收集(GC)算法使用该
- 年轻领域分为伊甸园和幸存者(两个)
- OldGen是用来保存物品的
正在将对象复制回幸存者空间以进行垃圾收集。。或者它是以其他方式发生的?Java堆中的每个对象都有一个标头,垃圾收集(GC)算法使用该标头。年轻的空间收集器(负责对象升级)使用此标头中的一些位来跟踪幸存的对象集合数(32位JVM使用4位,64位可能更多) 在年轻空间收集期间,将复制每个对象。对象可以复制到一个生存空间(年轻GC之前为空的空间)或旧空间。对于要复制的每个对象,GC算法都会增加其年龄(保留的集合数),如果年龄高于当前寿命阈值,则会将其复制(升级)到旧空间。如果生存空间已满(溢出),对象也可以直接复制到旧空间 对象的旅程具有以下模式:
- 伊甸园
- 由于年轻GC,从伊甸园复制到生存空间
- 由于年轻GC,从生存空间复制到(其他)生存空间(这种情况可能会发生几次)
- 由于年轻GC(或完整GC),从生存(或可能的伊甸园)提升到旧空间
当一个对象达到其JVM确定的期限阈值时,它被复制到旧的。在此之前,它将被复制到空的幸存者空间。已存活一段时间但在达到阈值之前被取消引用的对象将非常有效地从存活对象中清除。您无法回答更改
maxtenuringreshold
将如何影响GC。如果我把它设为6呢?15? 区别是什么?是否在任何地方记录了MaxTenuringThreshold
的最大(有效)值?您不应将该值设置超过15。裁判: