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