JVM 堆大小不相加

The JVM heap size does not add up

我用 VM 参数启动了一个 Java 8 JVM:

-Xms10M -Xmx10M

堆的结构是这样的:

PSYoungGen: 2048K
   eden space: 1024K
   from space: 1024K
   to space: 1024K

ParOldGen: total: 7168K

我的问题是:

  1. 为什么eden+from+to不等于PSYoungGen?我认为他们都是年轻一代。
  2. 为什么PSYoungGen + OldGen = 9M?另一个 1M 堆在哪里?

显示的是尺寸,而不是入住率。在任何给定的时间点,一个 Survivor spaces 是 ,所以 :

PSYoungGen = "eden space" (1024K) + one of the two "from/to space" (1024K)

两个Survivorspace还需要space预留,ParOldGen就是“剩下”的,也就是10M-3M(eden和两个survivorspaces)。我想这只是关于你如何阅读它以及你如何解释它...