14

我了解 new gen / old gen / perm gen 之间的区别,但我不知道“To Space”和“From Space”是什么。我看到我的“From Space”使用率达到 99.8%,而“To Space”似乎总是保持在 0% 的使用率。

4

2 回答 2

12

VM 中使用的垃圾收集算法中的两个区域。

Java 细节可以在这里找到:Java 中的垃圾收集是如何工作的

以及关于“从太空”和“到太空”的一般解释:WP

最直接的方法是半空间收集器,它可以追溯到 1969 年。在这种移动 GC 方案中,内存被划分为“从空间”“到空间”。最初,对象被分配到“空间”中,直到它们变满并触发收集。在集合开始时,“to space”变成“from space”,反之亦然。从根集可达的对象从“从空间”复制到“到空间”

您的“到空间”为 0% 的原因是,除了收集期间,只使用其中一个;当收集完成并且所有 obj 都在“to space”中时,名称将被交换,“to space”现在称为“from space”。

于 2013-02-27T21:17:22.843 回答
0

不同的来源用不同的术语指代这些:这些是幸存者“乒乓”空间,如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 PS 代表 Parallel Scavenge

于 2020-06-16T14:20:03.430 回答