了解 java 11 中的 GC1 日志文件

Understanding GC1 log file in java 11

作为 中问题的一部分,我很难理解这些数字的实际含义。

例如:

  [2020-07-14T10:01:14.791-0400][gc            ] GC(353) Pause Young (Normal) (G1 Evacuation Pause) 163M->16M(248M) 1.689ms
[2020-07-14T10:01:14.790-0400][gc,heap       ] GC(353) Eden regions: 147->0(147)
[2020-07-14T10:01:14.790-0400][gc,heap       ] GC(353) Survivor regions: 1->1(19)
[2020-07-14T10:01:14.790-0400][gc,heap       ] GC(353) Old regions: 16->16
[2020-07-14T10:01:14.790-0400][gc,heap       ] GC(353) Humongous regions: 1->1

我知道147->0是before/after集合,但是这里和下面的单位是什么?正如我所见,整个年轻一代从 163M 减少到 16M ,看起来这几乎完全发生在伊甸园区域内 - 所以对象在移动到幸存者之前就已经超出范围 space ?

what is the unit here

A region。区域大小因堆大小或显式设置而异。

it also looks like this happens almost entirely within the Eden regions - so the objects already went out of scope before even moving to the survivor space?

其中大部分,少量可能仍会流入后代,但另一方面,这些区域也可能包含可以收集的现已死亡的物体,因此它大部分处于平衡状态,只有非常小的流量流向旧的一代。这种行为是分代收集器如此高效的原因。