JVM堆分为两个空间,旧一代空间和年轻一代空间。在主要的GC之后,在压缩/扫描过程之后将有老一代的空闲空间,我想知道在主要GC期间我们获得的自由空间是否仍然属于老一代空间,或者老一代的自由空间是否可以移动到空间年轻一代?
换句话说,我问的是老一代的空间和年轻一代的空间是否有固定的大小/边界。
提前谢谢, 林答案 0 :(得分:1)
我认为这是每一代之间的界限,但是某些世代的大小可能会因-Xmx
和-Xms
不同而变化。
何时收集一个对象,垃圾收集会将该空间标记为对象使用的可用空间。
它看起来像是删除磁盘上的文件。操作系统只是标记文件路径不可访问,并使空间可用于下一个商店。
像磁盘分区这样的世代,但世代可以减少或增加它们的空间。
答案 1 :(得分:1)
在Hotspot中,有
的选项-XX:+UseAdaptiveSizePolicy
-XX:+UseAdaptiveGCBoundary
但VM仍然可以忽略这一点。它的一部分是黑暗自动调整魔法。 对于简单性,只要假设旧的和年轻的划分是固定的。同样适用于伊甸园和幸存者。