首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >G1 GC大型对象分配

G1 GC大型对象分配
EN

Stack Overflow用户
提问于 2018-09-03 09:33:59
回答 1查看 6.1K关注 0票数 4

在G1 GC的正式文档垃圾-第一垃圾收集器中,有一部分是这样写的:

但是,对于基元类型数组(例如bool、各种整数和浮点值)的大型对象,有一个特殊的规定。

这些话是什么意思?我在google中找不到任何参考,java进程是否直接把它放到了“终身生成”中分配一个基元类型的数组,我真的很困惑,有人能帮我吗,这是官方的解释吗?

EN

回答 1

Stack Overflow用户

发布于 2018-09-06 14:21:20

如果数组大小超过G1区域的一半(与其他对象相同),则这些原语的数组将被视为庞大的对象。但是,当涉及到回收这些数组时,G1对它们的处理方式有所不同,因为它将尝试在任何类型的集合暂停期间恢复它们。为了安全地做到这一点,收集器需要检查到数组的任何链接,以确保不能再访问它。这就是为什么文档说,“G1机会主义地试图收回巨大的对象,如果它们没有被许多对象引用.”这可能有点令人困惑,因为只有在没有引用的情况下,您才会期望收回一些东西。

这个bug解释了使用https://bugs.openjdk.java.net/browse/JDK-8048179的方式背后的原理。

此外,这篇博文还提供了更详细的https://blogs.oracle.com/poonam/eager-reclamation-of-humongous-objects-with-g1

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52146969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档