Java 缺少记忆:年轻一代的大小只包括一个幸存者空间

Java 缺少记忆:年轻一代的大小只包括一个幸存者空间,java,memory,garbage-collection,jvm,heap,Java,Memory,Garbage Collection,Jvm,Heap,在Java堆上,我预计年轻一代的大小将是eden空间和两个幸存者空间的大小之和(从空间和到空间): 但是,GC日志(使用XX:+PrintHeapAtGC)指出,年轻一代的大小是伊甸园空间大小的总和,并且只有一个幸存者空间: [young gen size] = [eden space size] + [from space size] 为什么年轻一代的大小只包括一个幸存者空间的大小? 可能是因为任何时候都只有一个幸存者空间可用?但是这两个幸存者空间都存在,所以这两个幸存者空间都应该对新一代的

在Java堆上,我预计年轻一代的大小将是eden空间和两个幸存者空间的大小之和(从空间和到空间):

但是,GC日志(使用
XX:+PrintHeapAtGC
)指出,年轻一代的大小是伊甸园空间大小的总和,并且只有一个幸存者空间

[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

任何时候,一个幸存者空间总是空的,因此不能认为它可用。

任何时候,一个幸存者空间总是空的,因此不能认为它可用

[young gen size] = [eden space size] + [from space size]
     943744K     =      838912K      +      104832K