杨二明*_*杨二明 4 java arrays garbage-collection
在G1 GC( Garbage-First Garbage Collector)的官方文档中,有这样一段话:
然而,对于原始类型数组的巨大对象有一个特殊的规定,例如 bool、各种整数和浮点值。
这些话是什么意思?我在谷歌中找不到任何参考,java进程是否直接将其放入终身生成中分配原始类型数组,我真的很困惑,任何人都可以帮助我,是官方解释吗?
Spe*_*ava 11
如果数组大小超过 G1 区域的一半(与其他对象相同),则这些基元的数组将被视为巨大对象。然而,当谈到回收这些数组时,G1 会以不同的方式对待它们,因为它会在任何类型的收集暂停期间尝试回收它们。为了安全地做到这一点,收集器需要检查数组的任何链接以确保它不再被访问。这就是为什么文档说,“如果大量对象没有被许多对象引用,G1 会机会主义地尝试回收它们......”这可能看起来有点令人困惑,因为您希望仅在没有引用的情况下回收某些东西。
此错误解释了其措辞方式背后的基本原理 https://bugs.openjdk.java.net/browse/JDK-8048179
此外,这篇博文提供了更多详细信息 https://blogs.oracle.com/poonam/eager-reclamation-of-humongous-objects-with-g1
归档时间: |
|
查看次数: |
8675 次 |
最近记录: |