Minor GC是什么时候触发的?
When was Minor GC triggered?
我google了一下,发现大部分文章都是这么说的
'Minor GC is always triggered when JVM is unable to allocate space for a new Object,'
但是从visualVM上,我发现minor gc发生的非常频繁。我可以看到 Eden space 将被回收,然后非空的 so,s1 将被清除。
所以我认为在eden generation满的时候并不会触发minor gc。
新对象的分配发生在伊甸园区域;当 Eden 区域已满时,survivors 被复制到 Survivor space 中,Eden 的剩余部分 space 被丢弃。当 Survivor space 已满时,对象将被复制到另一个 Survivor space (S0<->S1),并且在一定数量的副本 (3) 之后,继续的 survivor 将被复制到堆。当您分配对象时,这种情况一直发生。 Major GC 是当整个堆被对象清扫并在没有更多 space 将幸存者复制到主堆时触发。
根据您附上的图表,以下是次要 GC 的原因:
1.In 图表,metaspace 很长一段时间都很高,所以这些导致了 full GC,而 intern 导致了 minor GC。
2.And还有一点,不要看左边的图,因为已经分配,提交,使用了内存我们不能说GC发生的确切时间,所以看看图的右侧,如果 Eden 中提交的内存 space 等于已使用的内存,则发生次要 GC。
3.So最后因为1和2原因交替发生minor GC
我google了一下,发现大部分文章都是这么说的
'Minor GC is always triggered when JVM is unable to allocate space for a new Object,'
但是从visualVM上,我发现minor gc发生的非常频繁。我可以看到 Eden space 将被回收,然后非空的 so,s1 将被清除。
所以我认为在eden generation满的时候并不会触发minor gc。
新对象的分配发生在伊甸园区域;当 Eden 区域已满时,survivors 被复制到 Survivor space 中,Eden 的剩余部分 space 被丢弃。当 Survivor space 已满时,对象将被复制到另一个 Survivor space (S0<->S1),并且在一定数量的副本 (3) 之后,继续的 survivor 将被复制到堆。当您分配对象时,这种情况一直发生。 Major GC 是当整个堆被对象清扫并在没有更多 space 将幸存者复制到主堆时触发。
根据您附上的图表,以下是次要 GC 的原因:
1.In 图表,metaspace 很长一段时间都很高,所以这些导致了 full GC,而 intern 导致了 minor GC。
2.And还有一点,不要看左边的图,因为已经分配,提交,使用了内存我们不能说GC发生的确切时间,所以看看图的右侧,如果 Eden 中提交的内存 space 等于已使用的内存,则发生次要 GC。
3.So最后因为1和2原因交替发生minor GC