什么原因导致java minor gc

时间:2012-02-16 23:31:09

标签: java garbage-collection jvm

我说的是UseParNewGC。我对java gc minor集合的理解是这样的。当jvm检测到eden已满(或者它无法满足分配请求时)

  1. 停止所有应用程序主题
  2. 计算伊甸园和一个幸存者空间中的活动对象,并将它们移动到另一个
  3. 如果没有足够的空间进行移动,或者幸存者中的物品已经足够老,那么它就会升级为老一代。
  4. 将伊甸园和清理过的幸存者标记为空
  5. 恢复应用程序主题。
  6. 完全正确吗?是否存在即使伊甸园未满也会触发次要gc的情况?

2 个答案:

答案 0 :(得分:1)

我认为你的流程正确。在某些情况下,由于完整的伊甸园空间以外的原因而触发了主要的GC,例如调用System.gc()或RMI。在这种情况下,还将运行次要GC。

答案 1 :(得分:0)

  

当jvm检测到eden已满(或者无法满足分配请求时)   在某种程度上,是的。但它动态调整生成大小以满足收集器的某些目标。主要是暂停时间和在GC中花费的CPU时间的一小部分。

间接地,这些目标决定了小集合的发生频率。主要收藏品也可能在它们运行之前触发次要收藏,以减少对短期年轻人的旧物品的引用。