【发布时间】:2013-02-27 21:11:34
【问题描述】:
我了解 new gen / old gen /perm gen 之间的区别,但我不知道“To Space”和“From Space”是什么。我看到我的“From Space”使用率达到 99.8%,而“To Space”似乎始终保持在 0% 的使用率。
【问题讨论】:
标签: java memory garbage-collection heap-memory jmap
我了解 new gen / old gen /perm gen 之间的区别,但我不知道“To Space”和“From Space”是什么。我看到我的“From Space”使用率达到 99.8%,而“To Space”似乎始终保持在 0% 的使用率。
【问题讨论】:
标签: java memory garbage-collection heap-memory jmap
VM 中使用的垃圾收集算法中的两个区域。
Java 细节可在此处找到:How Garbage Collection works in Java
以及关于“从太空”和“到太空”的一般解释:WP
最直接的方法是半空间收集器,它可以追溯到 1969 年。在这种移动 GC 方案中,内存被划分为 “从空间” 和 “到空间”。最初,对象被分配到“空间”中,直到它们变满并触发收集。在集合开始时,“to space”变成“from space”,反之亦然。从根集可达的对象从“从空间”复制到“到空间”
您的“到空间”为 0% 的原因是,除了收集期间,只使用其中一个;当收集完成并且所有 obj 都在“to space”中时,名称将被交换,“to space”现在称为“from space”。
【讨论】:
不同的来源用不同的术语来指代这些:这些是https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/sizing.html中解释的幸存者“乒乓”空间
另一个地方称它们为 S0 和 S1:https://codeahoy.com/2017/08/06/basics-of-java-garbage-collection/
JDK 的 jmap 实用程序称它们为“From Space”和“To Space”。
附: “PS Old Generation”中的PS代表Parallel Scavenge
【讨论】: