jvm详解 - 新生代与老年代
*************************************優(yōu)雅的分割線 **********************************
分享一波:程序員賺外快-必看的巔峰干貨
Java 中的堆是 JVM 所管理的最大的一塊內(nèi)存空間,主要用于存放各種類的實(shí)例對象。
在 Java 中,堆被劃分成兩個(gè)不同的區(qū)域:新生代 ( Young )、老年代 ( Old )。其中新生代 ( Young ) 又被劃分為三個(gè)區(qū)域:Eden、From Survivor、To Survivor。
這樣劃分的目的是為了使 JVM 能夠更好的管理堆內(nèi)存中的對象,包括內(nèi)存的分配以及回收。
堆的內(nèi)存模型大致為:
默認(rèn)的,新生代 ( Young ) 與老年代 ( Old ) 的比例的值為 1:2 ( 該值可以通過參數(shù) –XX:NewRatio 來指定 ),即:新生代 ( Young ) = 1/3 的堆空間大小。老年代 ( Old ) = 2/3 的堆空間大小。其中,新生代 ( Young ) 被細(xì)分為 Eden 和 兩個(gè) Survivor 區(qū)域,這兩個(gè) Survivor 區(qū)域分別被命名為 from 和 to,以示區(qū)分。
默認(rèn)的,Edem : from : to = 8 : 1 : 1 ( 可以通過參數(shù) –XX:SurvivorRatio 來設(shè)定 ),即: Eden = 8/10 的新生代空間大小,from = to = 1/10 的新生代空間大小。
根據(jù)垃圾回收機(jī)制的不同,Java堆有可能擁有不同的結(jié)構(gòu),最為常見的就是將整個(gè)Java堆分為
新生代和老年代。其中新生帶存放新生的對象或者年齡不大的對象,老年代則存放老年對象。
新生代分為den區(qū)、s0區(qū)、s1區(qū),s0和s1也被稱為from和to區(qū)域,他們是兩塊大小相等并且可以互相角色的空間。
絕大多數(shù)情況下,對象首先分配在eden區(qū),在新生代回收后,如果對象還存活,則進(jìn)入s0或s1區(qū),之后每經(jīng)過一次
新生代回收,如果對象存活則它的年齡就加1,對象達(dá)到一定的年齡后(默認(rèn)15),則進(jìn)入老年代。
新生代:存放剛出生不久的對象
老年代:存放比較活躍、經(jīng)常被引用的對象
垃圾回收機(jī)制在新生代比較頻繁
*************************************優(yōu)雅的分割線 **********************************
分享一波:程序員賺外快-必看的巔峰干貨
如果以上內(nèi)容對你覺得有用,并想獲取更多的賺錢方式和免費(fèi)的技術(shù)教程
請關(guān)注微信公眾號(hào):HB荷包
一個(gè)能讓你學(xué)習(xí)技術(shù)和賺錢方法的公眾號(hào),持續(xù)更新
總結(jié)
以上是生活随笔為你收集整理的jvm详解 - 新生代与老年代的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: map flatmap mapparti
- 下一篇: Linux里的21究竟是什么