尝试使用jstat监视JVM的性能时,我看到以下几行-

  Timestamp      PC       PU        OC          **OU**       YGC    FGC    FGCT     GCT
      ...
      283.7 132608.0 132304.8   1572864.0    **398734.1**     20     0    0.000    3.061
      284.0 132608.0 132312.8   1572864.0   **1547795.2**     21     0    0.000    3.061
      284.2 132608.0 132313.7   1572864.0    **417220.7**     21     0    0.000    3.418
      ...


有关的JVM使用2.5GB的Eden和4GB的Max运行。堆(-Xmn2560m -Xms4096m -Xmx4096m)

我不知道这些旧使用率的峰值怎么可能?

最佳答案

完全可以猜测,但是看起来好像是发生了,因为年轻的一代做了一个GC,可以将新对象踢入老一代。那可能会导致更老的一代压实过关。

我猜它会复制所有新内容(使旧的基因组变大),然后将其压缩回去……再次完全是猜测。

由于您要从年轻一代移走一堆东西,因此即使没有完整的GC也可能需要一些时间(和空间)来移动一些东西。

10-08 01:17