Minor GC是什么时候触发的?

时间:2016-05-02 14:02:35

标签: java garbage-collection jvm

我用谷歌搜索,发现大多数文章都说

'当JVM无法为新对象分配空间时,始终会触发次要GC,'

但是从visualVM,我发现次要的gc经常发生。我可以看到Eden空间将被重新调整,然后是非空的,s1将被清除。 所以我认为当伊甸园世代充满时,不会触发次要的gc。 enter image description here

2 个答案:

答案 0 :(得分:2)

根据您附上的图表是次要GC的原因:

1.在图表中,元空间长时间处于高位,因此这些导致完整的GC,实习生导致较小的GC。

2.另外还有一点是,不要看左边的图表,因为我已经无法确定GC发生的分配,提交,使用的内存,所以请看一下如果图中的右侧,如果Eden空间中的已提交内存等于已使用的内存,则会发生次要GC。

3.最后因为1和2个原因而发生轻微的GC。

答案 1 :(得分:0)

新对象的分配发生在伊甸园地区;当伊甸园地区满员时,幸存者被复制到幸存者空间,而伊甸园空间的其余部分则被丢弃。当幸存者空间已满时,对象将被复制到另一个幸存者空间(S0 - S1),并且在一定数量的副本(3)之后,将继续的幸存者复制到堆中。这在分配对象时始终发生。主要的GC是在为对象扫描完整堆时,并且在没有更多空间将幸存者复制到主堆时触发。