jmap中显示的“从太空”和“到太空”是什么意思?

我理解新一代/旧一代/烫发一代之间的区别,但我不知道“到太空”和“从太空”是什么。我看到我的“来自太空”达到99.8%的使用率,而“到太空”似乎总是保持在0%的使用率。


答案 1

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

Java细节可以在这里找到:垃圾回收在Java中的工作原理

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

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

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


答案 2

不同的来源用各种术语来指代这些:这些是幸存者“乒乓球”空间,如 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 PS在“PS老一代”中代表平行清道夫


推荐