📜  Java虚拟机-世代GC(1)

📅  最后修改于: 2023-12-03 15:02:06.993000             🧑  作者: Mango

Java虚拟机-世代GC

Java虚拟机是Java语言的核心,世代GC是Java虚拟机中的一种垃圾回收机制。世代GC将Java堆分为年轻代和老年代两部分,分别采用不同的垃圾回收算法,从而提高垃圾回收的性能。

年轻代

年轻代是Java堆中的一块区域,用于存放新创建的对象。年轻代采用分代回收算法,将其分为一个Eden区和两个Survivor区。

Eden区

Eden区是年轻代中的一个区域,用于存放新创建的对象。当Eden区满了之后,就会触发Minor GC(部分垃圾回收),将Eden区中的无用对象清除掉。

Survivor区

Survivor区是年轻代中的两个区域,用于存放从Eden区中幸存下来的对象。当一个Survivor区满了之后,就会触发Minor GC,将其中的无用对象清除掉,并将幸存下来的对象移到另一个Survivor区中。这样反复进行,直到Survivor区也满了之后,就会将幸存下来的对象移到老年代中。

老年代

老年代是Java堆中的一块区域,用于存放长期存活的对象。老年代采用标记-清除算法。

标记-清除算法

标记-清除算法是一种垃圾回收算法,它将Java堆中的所有对象分为两个部分:存活的对象和垃圾对象。首先标记出所有存活的对象,然后清除所有没有被标记的对象。

Full GC

Full GC是一种完全垃圾回收,它会扫描整个Java堆,清除所有无用的对象。Full GC耗费的时间相对较长,应该尽量避免出现Full GC。

总结

世代GC是Java虚拟机中的一种垃圾回收机制,它将Java堆分为年轻代和老年代两部分,分别采用不同的垃圾回收算法,从而提高垃圾回收的性能。在使用Java虚拟机时,应该尽量避免出现Full GC,以提高程序的性能。