Java這門世界上公認(rèn)的開發(fā)語言,一直在開發(fā)界都是有著很高的地位的,而這種地位不管是有多少的編程語言都無法撼動它的地位的。Java語言可以有著這么高的地位一直都是憑借著它本身的特點的,那么對于零基礎(chǔ)想要學(xué)習(xí)java的學(xué)員來說什么樣的java零基礎(chǔ)教程才是好的呢?

想要學(xué)習(xí)好java的話那么對于java的jvm運行大家肯定是要先了解清楚的了,下面達(dá)內(nèi)科技的小編就帶大家一起來了解下jvm運行時內(nèi)存是怎么樣的?Java
堆從 GC 的角度還可以細(xì)分為:新生代(Eden 區(qū)、From Survivor 區(qū)和 To Survivor 區(qū))和老年代。
新生代
是用來存放新生的對象。一般占據(jù)堆的 1/3 空間。由于頻繁創(chuàng)建對象,所以新生代會頻繁觸發(fā)MinorGC 進(jìn)行垃圾回收。新生代又分為 Eden
區(qū)、ServivorFrom、ServivorTo 三個區(qū)。
Eden 區(qū):Java 新對象的出生地(如果新創(chuàng)建的對象占用內(nèi)存很大,則直接分配到老年代)。當(dāng) Eden 區(qū)內(nèi)存不夠的時候就會觸發(fā)
MinorGC,對新生代區(qū)進(jìn)行一次垃圾回收。
ServivorFrom:上一次 GC 的幸存者,作為這一次 GC 的被掃描者。
ServivorTo:保留了一次 MinorGC 過程中的幸存者。
老年代
主要存放應(yīng)用程序中生命周期長的內(nèi)存對象。老年代的對象比較穩(wěn)定,所以 MajorGC 不會頻繁執(zhí)行。在進(jìn)行 MajorGC 前一般都先進(jìn)行了一次
MinorGC,使得有新生代的對象晉身入老年代,導(dǎo)致空間不夠用時才觸發(fā)。當(dāng)無法找到足夠大的連續(xù)空間分配給新創(chuàng)建的較大對象時也會提前觸發(fā)一次 MajorGC
進(jìn)行垃圾回收騰出空間。
MajorGC 采用標(biāo)記清除算法:首先掃描一次所有老年代,標(biāo)記出存活的對象,然后回收沒有標(biāo)記的對象。MajorGC
的耗時比較長,因為要掃描再回收。MajorGC
會產(chǎn)生內(nèi)存碎片,為了減少內(nèi)存損耗,我們一般需要進(jìn)行合并或者標(biāo)記出來方便下次直接分配。當(dāng)老年代也滿了裝不下的時候,就會拋出 OOM(Out of
Memory)異常。
零基礎(chǔ)想要學(xué)習(xí)java的話是要學(xué)習(xí)很的知識的,要先從基礎(chǔ)開始打起。如果說你想要學(xué)習(xí)java的話,那么達(dá)內(nèi)科技的小編歡迎大家來我們公司的java培訓(xùn)班進(jìn)行實地考察,也可以點擊我們文章下面的獲取試聽資格按鈕來獲取我們的java課程免費試聽資格,在試聽中可以更加深入的了解我們達(dá)內(nèi)科技。




