JVM中的主要GC问题

问题描述:

JVM堆分为两个空间,老一代空间和年轻一代空间。在主要的GC之后,在压缩/扫描过程之后将会释放旧一代的空间,我想知道我们在主要GC期间获得的空闲空间是否仍然属于旧一代空间,或者旧一代的空闲空间是否可以移动到空间年轻一代?JVM中的主要GC问题

换句话说,我问老年人的空间和年轻一代的空间是否有固定的大小/边界。

在此先感谢, 林

在热点中,有对于

-XX:+UseAdaptiveSizePolicy 
-XX:+UseAdaptiveGCBoundary 

然而,这仍然可以通过虚拟机被忽略的选项。它的黑暗自动调谐魔法的一部分。 为了简单起见,假定老年人和年轻人之间的分隔是固定的。同样适用于伊甸园和幸存者。

+0

谢谢F*,问题回答。 –

我想这是每一代之间的边界,但一些代的尺寸可能变化的正弦-Xmx-Xms不一样。

何时收集对象,垃圾收集将空间标记为对象所用的可用空间。

它看起来像删除磁盘上的文件。操作系统只是将文件路径标记为不可访问,并使下一个存储空间可用。

世代像磁盘分区,但世代可以减少或增加他们的空间。

+0

因此,这意味着如果主GC大量释放空间,而没有重新设置大小配置,这些空间就不能被年轻一代重复使用? –

+1

该空间可以重复使用。只需将文件从磁盘C移动到磁盘D即可。磁盘C释放下一个存储的文件空间。 – lichengwu

+0

谢谢@lichengwu。我想我们必须改变一些JVM配置,以便在年轻一代中使用旧一代的*空间?就像你给的-Xmx和-Xms选项一样? –