【发布时间】:2015-04-05 11:55:29
【问题描述】:
在 Java 堆上,我预计年轻一代的大小将是eden空间和两个幸存者空间(从空间和到空间):
[young gen size] = [eden space size] + [from space size] + [to space size]
但是,GC 日志(使用XX:+PrintHeapAtGC)表明young generation 的大小是eden 空间 和的大小之和幸存者空间之一:
[young gen size] = [eden space size] + [from space size]
为什么年轻代的大小只包括一个幸存者空间的大小?
可能是因为只有一个幸存者空间可用?但是两个幸存者空间都存在,所以两个幸存者空间都应该为新一代的规模做出贡献?
GC 日志:
{Heap before GC invocations=48 (full 17):
par new generation total 943744K, used 891496K [0x000000073ae00000, 0x000000077ae00000, 0x000000077ae00000)
eden space 838912K, 100% used [0x000000073ae00000, 0x000000076e140000, 0x000000076e140000)
from space 104832K, 50% used [0x000000076e140000, 0x000000077149a040, 0x00000007747a0000)
to space 104832K, 0% used [0x00000007747a0000, 0x00000007747a0000, 0x000000077ae00000)
来自:
[young gen size] = [eden space size] + [from space size]
943744K = 838912K + 104832K
【问题讨论】:
标签: java memory garbage-collection jvm heap-memory