jvm默認(rèn)垃圾回收算法 Java 8 jvm新生代用的什么垃圾回收機(jī)制?
Java 8 jvm新生代用的什么垃圾回收機(jī)制?JVM垃圾回收只針對(duì)公共內(nèi)存區(qū)域,即堆和方法區(qū)域,因?yàn)橹挥羞@兩個(gè)區(qū)域才能知道何時(shí)需要?jiǎng)?chuàng)建一些對(duì)象,并且它們的內(nèi)存分配和收集是動(dòng)態(tài)的逐代收集算法根據(jù)對(duì)象的
Java 8 jvm新生代用的什么垃圾回收機(jī)制?
JVM垃圾回收只針對(duì)公共內(nèi)存區(qū)域,即堆和方法區(qū)域,因?yàn)橹挥羞@兩個(gè)區(qū)域才能知道何時(shí)需要?jiǎng)?chuàng)建一些對(duì)象,并且它們的內(nèi)存分配和收集是動(dòng)態(tài)的
逐代收集算法根據(jù)對(duì)象的生命周期將內(nèi)存分為新一代和舊一代,并根據(jù)各自的特點(diǎn)選擇合適的垃圾收集算法。
對(duì)于新一代,大多數(shù)對(duì)象的生存時(shí)間非常短,每次只有少量對(duì)象存活。您可以選擇復(fù)制算法,只需復(fù)制少量對(duì)象即可完成收集。對(duì)于舊一代,對(duì)象的生存時(shí)間較長(zhǎng),因此可以選擇標(biāo)記清除算法或標(biāo)記整理算法。代收算法是商業(yè)虛擬機(jī)的主要恢復(fù)算法。
創(chuàng)建新對(duì)象通常在新一代中分配,而占用大量連續(xù)內(nèi)存的字符串和大型數(shù)組則在舊一代中分配。這是為了避免在回收舊一代時(shí)復(fù)制太多內(nèi)存,降低效率。
虛擬機(jī)為每個(gè)對(duì)象定義一個(gè)年齡計(jì)數(shù)器。第一次創(chuàng)建對(duì)象時(shí),它將直接分配給新一代。每次垃圾回收后,年齡都會(huì)增加一歲,當(dāng)年齡達(dá)到臨界值時(shí),就會(huì)移到老年。
JVM針對(duì)年輕代和老年代的GC算法有什么區(qū)別?
在客戶端模式下,新一代選擇串行GC,老一代選擇串行GC
在服務(wù)器模式下,新一代選擇并行GC,老一代選擇并行GC
一般來(lái)說(shuō),我們的系統(tǒng)有兩種選擇方式:吞吐量?jī)?yōu)先,吞吐量?jī)?yōu)先,服務(wù)器默認(rèn)采用并行GC模式,暫停時(shí)間優(yōu)先采用并發(fā)GC(CMS)模式。
在JVM中,新生代和舊生代有何區(qū)別?GC的回收方式有幾種?
有兩種恢復(fù)模式:JVM中的客戶端模式和服務(wù)器模式。這兩種模式下的默認(rèn)GC模式是不同的:在客戶端模式下,新一代選擇串行GC,老一代選擇串行GC服務(wù)器模式,新一代選擇并行恢復(fù)GC,老一代選擇并行GC。一般來(lái)說(shuō),系統(tǒng)應(yīng)用選擇有兩種模式:吞吐量?jī)?yōu)先和臨時(shí)恢復(fù)停止時(shí)間優(yōu)先,吞吐量?jī)?yōu)先采用服務(wù)器默認(rèn)的并行GC模式,暫停時(shí)間優(yōu)先采用并發(fā)GC(CMS)模式。