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