JVM问题中的主要GC

时间:2012-12-10 03:46:35

标签: garbage-collection jvm

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

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

提前谢谢, 林

2 个答案:

答案 0 :(得分:1)

我认为这是每一代之间的界限,但是某些世代的大小可能会因-Xmx-Xms不同而变化。

何时收集一个对象,垃圾收集会将该空间标记为对象使用的可用空间。

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

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

答案 1 :(得分:1)

在Hotspot中,有

的选项
-XX:+UseAdaptiveSizePolicy
-XX:+UseAdaptiveGCBoundary

但VM仍然可以忽略这一点。它的一部分是黑暗自动调整魔法。 对于简单性,只要假设旧的和年轻的划分是固定的。同样适用于伊甸园和幸存者。