当前位置: 首页 > 面试题库 >

MaxTenuringThreshold-工作原理如何?

江洲
2023-03-14
问题内容

我们知道,主要的内存域很少:Young,Tenured(Old gen)和PermGen。

  • 年轻领域分为伊甸园和幸存者(两个)。
  • OldGen用于保留对象。

MaxTenuringThreshold可以防止将对象最终过早地复制到OldGen空间。这很清楚而且可以理解。

但是它如何工作?垃圾收集器如何处理这些仍存活到MaxTenuringThreshold的对象,并且以什么方式处理?他们在哪里?

对象被复制回Survivor空间进行垃圾回收..还是其他原因发生?


问题答案:

Java堆中的每个对象都有一个标头,垃圾收集(GC)算法使用该标头。年轻的空间收集器(负责对象提升)使用此标头中的几位来跟踪幸存的收集对象的数量(32位JVM为此使用4位,而64位可能更多)

在收集年轻空间期间,将复制每个对象。可以将对象复制到一个生存空间(一个在年轻GC之前为空的生存空间)或一个旧空间。对于每个要复制的对象,GC算法都会增加其使用
期限 (幸存的收藏数量),如果该使用 期限 超过当前使用 期限阈值
,则会将其复制(升级)到旧空间。如果生存空间已满(溢出),也可以将对象直接复制到旧空间。

对象的旅程具有以下模式:

  • 在伊甸园分配
  • 由于年轻的GC而从伊甸园复制到生存空间
  • 由于年轻的GC而从生存空间复制到(其他)生存空间(这可能会发生几次)
  • 由于年轻的GC(或完整的GC)而从生存(或可能的伊甸园)提升到旧空间

实际的使用 期限阈值 是由JVM动态调整的,但是MaxTenuringThreshold对此设置了上限。

如果设置MaxTenuringThreshold = 0,则所有对象将立即升级。

我有几篇有关Java垃圾回收的文章,您可以在其中找到更多详细信息。



 类似资料:
  • 我们知道主存域很少:年轻的、终生的(旧的gen)和PermGen。 年轻领域分为伊甸园和幸存者(有两个)。 OldGen用于生存的对象。 MaxTenuringThreshold防止对象过早地被最终复制到OldGen空间。这很清楚,也很容易理解。 但是它是如何工作的呢?垃圾回收器如何处理这些在MaxTenuringThreshold之前仍然存在的对象,以何种方式?它们位于何处? 对象被复制回幸存者

  • 1、Register、Gateway、BusinessWorker进程启动 2、Gateway、BusinessWorker进程启动后向Register服务进程发起长连接注册自己 3、Register服务收到Gateway的注册后,把所有Gateway的通讯地址保存在内存中 4、Register服务收到BusinessWorker的注册后,把内存中所有的Gateway的通讯地址发给Business

  • 工作原理 FIS3 是基于文件对象进行构建的,每个进入 FIS3 的文件都会实例化成一个 File 对象,整个构建过程都对这个对象进行操作完成构建任务。以下通过伪码来阐述 FIS3 的构建流程。 构建流程 fis.release = function (opt) { var src = fis.util.find(fis.project.root); var files = {}; s

  • IoT 客户端框架 Azure IoT 中心为了方便设备连接提供了丰富的连接协议,如 MQTT、HTTP 等,同时 Azure IoT 中心只支持安全连接。与 IoT 中心的连接由设备客户端来完成,每一个连接到 IoT 中心的设备都会创建一个 IoT 中心客户端实例,当连接关闭时,将这个实例释放掉即可。 IoT 中心客户端会向下调用 LL 层来完成工作,LL 层向下对接不同通信协议的传输层,传输层

  • WebClient 软件包主要用于在嵌入式设备上实现 HTTP 协议,软件包的主要工作原理基于 HTTP 协议实现,如下图所示: HTTP 协议定义了客户端如何从服务器请求数据,以及服务器如何把数据传送给客户端的方式。HTTP 协议采用了请求/响应模型。 客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版

  • mbedtls 软件包是对 SSL/TLS 协议的实现。SSL(安全套接层)和 TLS(传输安全层)均是为了保证传输过程中信息的安全,是在明文传输基础上进行的加密,然后以密文的形式传输数据。 mbedTLS 建立安全通信连接需要经过以下几个步骤: 初始化 SSL/TLS 上下文 建立 SSL/TLS 握手 发送、接收数据 交互完成,关闭连接 其中,最关键的步骤就是 SSL/TLS 握手 连接的建立