Java 缺少记忆:年轻一代的大小只包括一个幸存者空间
在Java堆上,我预计年轻一代的大小将是eden空间和两个幸存者空间的大小之和(从空间和到空间): 但是,GC日志(使用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] 为什么年轻一代的大小只包括一个幸存者空间的大小? 可能是因为任何时候都只有一个幸存者空间可用?但是这两个幸存者空间都存在,所以这两个幸存者空间都应该对新一代的
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