尝试使用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)
我不明白Old Gen.使用中的这些尖峰怎么可能?
答案 0 :(得分:1)
完全猜测,但看起来它发生了正确,因为年轻的一代做了GC,可能会把新物品踢进老一代。这可能会导致老一代更严格的压缩传递。
我猜它复制了所有新东西(使旧版本更大),然后将其压缩...再次猜测。
由于你正在从年轻一代移动一堆东西,即使没有完整的GC,也可能需要时间(和空间)来移动一些东西。