在java的jvm 垃圾回收知识体系中,我们经常会听说到两个词,一个是major GC,一个是 full GC。这篇文章我们介绍下什么是full GC。
那什么是full gc呢?
在垃圾回收里面,我们知道有年轻代和老年代,当年轻代和老年代的内存都暂用很高的时候,这时候会进行一次全盘的清理,也就是在年轻代和老年代的内存区域全部触发一次垃圾回收。
Full GC出发条件有哪些呢?
1、代码里面调用System.gc时,有可能会出发full gc。注意这里是有可能,不是一定会触发,而且及时是需要触发,也不是立刻马上执行。 2、老年代内存空间不足。这种常发生在有连续大对象需要进入老年代,老年代的内存不足 3、方法区内存空间不足 4、在执行minor gc的时候进行检查内存不足,也会触发。
那么如何减少full gc的频次呢?
1、方法区空间设置大一点 2、老年代空间增大一点 3、新生代空间减小一点 4、代码中禁止或者减少使用System.gc 5、排除代码中无用的大对象
还没有评论,来说两句吧...