GC回收过程

Java的GC堆空间可分为年轻代(new Generation) 和年老代(old Generation), new Generation分为Eden, From, To区。其大小默认比例是8:1:1. 新的对象总是在Eden Space中被创建,当Eden区域满时,会触发Monitor GC, 这时会将仍在被使用的读写从Eden区copy到From区,然后清除Eden区;这样Eden区空了,新对象继续可在Eden中创建,当Eden再满时,触发Monitor GC把Eden和From区中仍然存活的对象copy到To区,然后清空Eden和From区;当Eden区再满时,触发Monitor GC把Eden和To区中仍然存活的对象copy到From区,然后清空Eden和To区。这样,new Generation中的对象,每熬过一次Monitor GC后仍然存活,则年龄+1岁,当他达到15岁还没有被GC,则他会升级到Old Generation中。当Old Generation区域满时,会触发Full GC, Full GC会对系统性能产生较大影响。所以,要根据系统特点,合理设置new Generation和old Generation的大小,尽量减少Full GC.

猜你喜欢

转载自doudou-001.iteye.com/blog/2310835