【问题标题】:When was Minor GC triggered?Minor GC什么时候触发的?
【发布时间】:2016-05-02 14:02:34
【问题描述】:

我google了一下,发现大部分文章都是这么说的

'当 JVM 无法为新对象分配空间时,总会触发 Minor GC,'

但是从visualVM,我发现minor gc 发生得非常频繁。我可以看到 Eden 空间将被回收,然后非空的 so,s1 将被清除。 所以我认为当伊甸园代满时不会触发次要gc。

【问题讨论】:

标签: java garbage-collection jvm


【解决方案1】:

根据您所附的图表,以下是次要GC的原因:

1.在图中,metaspace 长时间处于高位,导致full GC,intern 导致minor GC。

2. 还有一点是,不要看左边的图表,因为已经分配、提交、使用了内存,我们不能准确地说 GC 发生的时间,所以看右边的如图,如果 Eden 空间中已提交的内存等于已用内存,则发生 Minor GC。

3.所以最后会因为1和2的原因交替发生minor GC。

【讨论】:

    【解决方案2】:

    新对象的分配发生在伊甸园区域;当 Eden 区域已满时,Survivor 将被复制到 Survivor 空间中,而 Eden 空间的其余部分则被丢弃。当 Survivor 空间已满时,对象将被复制到另一个 Survivor 空间 (S0S1),并且在一定数量的副本 (3) 之后,继续的幸存者将被复制到堆中。当您分配对象时,这种情况一直发生。主要 GC 是在整个堆中清除对象并在没有更多空间将幸存者复制到主堆时触发。

    【讨论】:

      猜你喜欢
      • 2020-05-16
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 2017-11-20
      • 1970-01-01
      相关资源
      最近更新 更多