JDK 1.7 和 JDK 1.8 運行時數據結構

1 對比圖

image.png

2 方法區(qū)的變化

JDK1.8 與JDK1.7 最大的區(qū)別是:JDK1.8 將永久代取消,取而代之的是元空間荣回,在 JDK1.8 中方法區(qū)是由元空間來實現遭贸,所以原來屬于方法區(qū)的運行時常量池就屬于元空間了。
??元空間屬于本地內存驹马,所以元空間的大小僅受本地內存限制革砸,但是可以通過 -XX:MaxMetaspaceSize 進行增長上限的最大值設置,默認值為 4G糯累,元空間的初始空間大小可以通過 -XX:MetaspaceSize 進行設置算利,默認值為 20.8M,還有一些其他參數可以進行設置泳姐,元空間大小會自動進行調整效拭。

3 數據的遷移

  • 在 JDK1.7 之前運行時常量池,字符串常量池胖秒,靜態(tài)域等存放在方法區(qū), 運行時常量池邏輯包含字符串常量池缎患,此時hotspot虛擬機對方法區(qū)的實現為永久代。
  • 在 JDK1.7 中字符串常量池和靜態(tài)域被從方法區(qū)(永久代)拿到了堆中(在堆中另開辟了一塊空間)阎肝,這里沒有提到運行時常量池,也就是說字符串常量池被單獨拿到堆,運行時常量池剩下的東西還在方法區(qū),也就是 HotSpot 中的永久代挤渔。
  • 在 JDK1.8 中 HotSpot 移除了永久代,用元空間(Metaspace)取而代之, 這時候字符串常量池還在堆,運行時常量池還在方法區(qū),只不過方法區(qū)的實現從永久代變成了元空間(Metaspace)风题。

4 元空間簡介

用于存儲已被虛擬機加載的類元數據判导,符號引用嫉父,即包括運行時常量池。元空間的本質和永久代類似眼刃,都是對 JVM 規(guī)范中方法區(qū)的實現绕辖。

不過元空間與永久代之間最大的區(qū)別在于:元空間并不在虛擬機中,而是使用本地內存擂红。因此仪际,默認情況下,元空間的大小僅受本地內存限制昵骤,但可以通過以下參數來指定元空間的大惺骷睢:-XX:MetaspaceSize

4.1 元數據

元數據(Meta Data)变秦,關于數據的數據或者叫做用來描述數據的數據或者叫做信息的信息赴恨。
??這些定義都很是抽象,我們可以把元數據簡單的理解成伴栓,最小的數據單位。元數據可以為數據說明其元素雨饺、屬性(名稱钳垮、大小、數據類型额港、等)饺窿,、結構(長度移斩、字段肚医、數據列)、相關數據(位于何處向瓷、如何聯系肠套、擁有者)等。

4.2 為什么移除永久代猖任?

  • 由于永久代使用 JVM 內存經常不夠用或發(fā)生內存泄露你稚,引發(fā)惱人的 OutOfMemoryError 異常(在 Java Web 開發(fā)中非常常見)。
  • 移除永久代可以促進 HotSpotJRockit 兩種虛擬機的融合朱躺,因為 JRockit 沒有永久代刁赖。
  • 對永久代進行調優(yōu)是很困難的。永久代中的元數據可能會隨著每一次Full GC發(fā)生而進行移動长搀。

4.3 為什么要引入元空間宇弛?

  • 字符串常量存在永久代中,容易出現性能問題和內存溢出源请。
  • 類及方法的信息等比較難確定其大小枪芒,因此對于永久代的大小指定比較困難彻况,太小容易出現永久代溢出,太大則容易導致老年代溢出病苗。
  • 永久代會為 GC 帶來不必要的復雜度疗垛,并且回收效率偏低。
  • Oracle 可能會將HotSpot與Jrockit兩種虛擬機合二為一硫朦。
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末贷腕,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子咬展,更是在濱河造成了極大的恐慌泽裳,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件破婆,死亡現場離奇詭異涮总,居然都是意外死亡,警方通過查閱死者的電腦和手機祷舀,發(fā)現死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門瀑梗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人裳扯,你說我怎么就攤上這事抛丽。” “怎么了饰豺?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵亿鲜,是天一觀的道長。 經常有香客問我冤吨,道長蒿柳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任漩蟆,我火速辦了婚禮垒探,結果婚禮上,老公的妹妹穿的比我還像新娘爆安。我一直安慰自己叛复,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布扔仓。 她就那樣靜靜地躺著褐奥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翘簇。 梳的紋絲不亂的頭發(fā)上撬码,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音版保,去河邊找鬼呜笑。 笑死夫否,一個胖子當著我的面吹牛,可吹牛的內容都是我干的叫胁。 我是一名探鬼主播凰慈,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼驼鹅!你這毒婦竟也來了微谓?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤输钩,失蹤者是張志新(化名)和其女友劉穎豺型,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體买乃,經...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡姻氨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了剪验。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肴焊。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖功戚,靈堂內的尸體忽然破棺而出抖韩,到底是詐尸還是另有隱情,我是刑警寧澤疫铜,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站双谆,受9級特大地震影響壳咕,放射性物質發(fā)生泄漏。R本人自食惡果不足惜顽馋,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一谓厘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寸谜,春花似錦竟稳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至果善,卻和暖如春诊笤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背巾陕。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工讨跟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留纪他,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓晾匠,卻偏偏與公主長得像茶袒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子凉馆,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容