jvm回收機(jī)制的三大算法 JVM針對年輕代和老年代的GC算法有什么區(qū)別?
JVM針對年輕代和老年代的GC算法有什么區(qū)別?根據(jù)對象的生命周期,分代收集算法將內(nèi)存分為新一代和舊一代,并根據(jù)各自的特點(diǎn)選擇合適的垃圾收集算法。對于新一代,大多數(shù)對象的生存時(shí)間非常短,每次只有少量對象
JVM針對年輕代和老年代的GC算法有什么區(qū)別?
根據(jù)對象的生命周期,分代收集算法將內(nèi)存分為新一代和舊一代,并根據(jù)各自的特點(diǎn)選擇合適的垃圾收集算法。
對于新一代,大多數(shù)對象的生存時(shí)間非常短,每次只有少量對象存活。您可以選擇復(fù)制算法,只需復(fù)制少量對象即可完成收集。對于舊一代,對象的生存時(shí)間較長,因此可以選擇標(biāo)記清除算法或標(biāo)記整理算法。代收算法是商業(yè)虛擬機(jī)的主要恢復(fù)算法。
創(chuàng)建新對象通常在新一代中分配,而占用大量連續(xù)內(nèi)存的字符串和大型數(shù)組則在舊一代中分配。這是為了避免在回收舊一代時(shí)復(fù)制太多內(nèi)存,降低效率。
虛擬機(jī)為每個(gè)對象定義一個(gè)年齡計(jì)數(shù)器。第一次創(chuàng)建對象時(shí),它將直接分配給新一代。每次垃圾回收后,年齡都會(huì)增加一歲,當(dāng)年齡達(dá)到臨界值時(shí),就會(huì)移到老年。