- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我们知道主要内存域很少:Young、Tenured(Old gen)和 PermGen。
MaxTenuringThreshold 防止对象过早地最终复制到 OldGen 空间。它非常清晰易懂。
但是它是如何工作的呢?垃圾收集器如何处理这些仍然存活到 MaxTenuringThreshold 的对象以及以什么方式?它们位于哪里?
对象被复制回幸存者空间进行垃圾收集.. 还是以其他方式发生?
最佳答案
Java 堆中的每个对象都有一个用于垃圾收集 (GC) 算法的 header 。年轻的空间收集器(负责对象提升)使用此 header 中的一些位来跟踪已存活的集合对象的数量(32 位 JVM 使用 4 位,64 位可能更多) .
在年轻空间收集期间,每个对象都被复制。 Object 可以复制到生存空间之一(在年轻 GC 之前为空的空间)或旧空间。对于每个被复制的对象,GC 算法会增加它的年龄(存活的集合数),如果年龄高于当前的tenuring threshold,它将被复制(提升)到旧空间。如果生存空间已满(溢出),对象也可以直接复制到旧空间。
Object的旅程有以下模式:
实际的tenuring threshold由JVM动态调整,但MaxTenuringThreshold设置了一个上限。
如果设置 MaxTenuringThreshold=0,所有对象都会立即提升。
我有 few articles关于java垃圾回收,你可以找到更多细节。
关于java - MaxTenuringThreshold - 它究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13543468/
Feel free to skip straight to TL/DR if you're not interested in details of the question 简短的序言: 我最近决定
我一直在阅读 A Tour of Go学习Go-Lang到目前为止一切顺利。 我目前在 Struct Fields类(class),这是右侧的示例代码: package main import "fm
Last time I got confused顺便说一下PowerShell急切地展开集合,基思总结了它的启发式如下: Putting the results (an array) within a
我是一名优秀的程序员,十分优秀!