成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么用元空間替代永久代?

開發(fā) 前端
JDK 1.8 及以后:無永久代,使用元空間(存放在本地內(nèi)存中)實(shí)現(xiàn)方法區(qū),常量保存在元空間,但字符串常量池和靜態(tài)變量依然保存在堆中。

永久代和元空間都是 HotSpot 虛擬機(jī)中的概念,HotSpot 虛擬機(jī)是 Sun JDK 和 Open JDK 中自帶的虛擬機(jī),也是目前使用范圍最廣泛的 Java 虛擬機(jī),當(dāng)我們提到虛擬機(jī)時(shí),大概率指的就是 HotSpot 虛擬機(jī)。

但從《Java 虛擬機(jī)規(guī)范》的層面來說,并沒有所謂的“永久代”和“元空間”等區(qū)域,詳見官方文檔:https://docs.oracle.com/javase/specs/jvms/se17/html/jvms-2.html#jvms-2.5。《Java 虛擬機(jī)規(guī)范》只是規(guī)定了一個(gè)區(qū)域叫“方法區(qū)(Method Area)”,而“永久代”和“元空間”是 HotSpot 虛擬機(jī)在不同的 JDK 版本下,對方法區(qū)的具體實(shí)現(xiàn)而已。這就好像,世界羽協(xié)規(guī)定羽毛球比賽必須要使用羽毛球拍(方法區(qū)),而中國羽毛球運(yùn)動(dòng)員,第一年使用的是紅雙喜牌的羽毛球拍(永久代),第二年使用的是李寧牌羽毛球拍(元空間)一樣。

那么問題來了,永久代為什么被元空間給替代了?

1.官方答案

關(guān)于這個(gè)問題,官方在 JEP 122: Remove the Permanent Generation(移除永久代)中給出了答案,原文內(nèi)容如下:

Motivation(動(dòng)機(jī))

This is part of the JRockit and Hotspot convergence effort. JRockit customers do not need to configure the permanent generation (since JRockit does not have a permanent generation) and are accustomed to not configuring the permanent generation.

以上內(nèi)容翻譯成中文大意是:

這是 JRockit 虛擬機(jī)和 HotSpot 虛擬機(jī)融合工作的一部分。JRockit 客戶不需要配置永久層代(因?yàn)?JRockit 沒有永久代),所以要移除永久代。

JRockit 是 Java 官方收購的一家號(hào)稱史上運(yùn)行最快的 Java 虛擬機(jī)廠商,之后 Java 官方在 JDK 8 時(shí)將 JRockit 虛擬機(jī)和 HotSpot 虛擬機(jī)進(jìn)行了整合。

PS:JEP 是 JDK Enhancement Proposal 的縮寫,翻譯成中文是 JDK 改進(jìn)提案。你也可以把它理解為 JDK 的更新文檔。

通過官方的描述,我們似乎找到了答案,也就是說,之所以要取消“永久代”是因?yàn)?Java 官方收購了 JRockit,之后在將 JRockit 和 HotSpot 進(jìn)行整合時(shí),因?yàn)?JRockit 中沒有“永久代”,所以把永久代給移除了。

PS:上面的那段描述好像說的已經(jīng)很清楚了,但又好像什么也沒說。這就好比,我問你“為什么要買車?”,你說“別人都買車了,所以我要買車”,但為什么別人要買車?

2.背后的原因

上述給出了移除永久代的回答,但卻沒有給出背后的原因,那接下來我們就來討論一下,為什么要移除永久代?以及為什么要有元空間?

2.1 降低 OOM

當(dāng)使用永久代實(shí)現(xiàn)方法區(qū)時(shí),永久代的最大容量受制于 PermSize 和 MaxPermSize 參數(shù)設(shè)置的大小,而這兩個(gè)參數(shù)的大小又很難確定,因?yàn)樵诔绦蜻\(yùn)行時(shí)需要加載多少類是很難估算的,如果這兩個(gè)參數(shù)設(shè)置的過小就會(huì)頻繁的觸發(fā) FullGC 和導(dǎo)致 OOM(Out of Memory,內(nèi)存溢出)。

但是,當(dāng)使用元空間替代了永久代之后,出現(xiàn) OOM 的幾率就被大大降低了,因?yàn)樵臻g使用的是本地內(nèi)存,這樣元空間的大小就只和本地內(nèi)存的大小有關(guān)了,從而大大降低了 OOM 的問題。

2.2 降低運(yùn)維成本

因?yàn)樵臻g使用的是本地內(nèi)存,這樣就無需運(yùn)維人員再去專門設(shè)置和調(diào)整元空間的大小了。

3.方法區(qū)發(fā)展史

在 HotSpot 虛擬機(jī)中,方法區(qū)的實(shí)現(xiàn)經(jīng)歷了以下 3 個(gè)階段:

  1. JDK 1.6 及之前:方法區(qū)使用永久代實(shí)現(xiàn),靜態(tài)變量存放在永久代;
  2. JDK 1.7 :“去永久代”的前置版本,還存在永久代,不過已經(jīng)將字符串常量池和靜態(tài)變量從永久代移到了堆上;
  3. JDK 1.8 及以后:無永久代,使用元空間(存放在本地內(nèi)存中)實(shí)現(xiàn)方法區(qū),常量保存在元空間,但字符串常量池和靜態(tài)變量依然保存在堆中。

總結(jié)

永久代和元空間都是 HotSpot 虛擬機(jī)對《Java 虛擬機(jī)規(guī)范》中方法區(qū)的實(shí)現(xiàn),在 JDK 1.8 之前 HotSpot 是使用永久代來實(shí)現(xiàn)方法區(qū)的,但這樣會(huì)導(dǎo)致 JVM 調(diào)優(yōu)比較困難,且容易發(fā)生 OOM 的問題,而 JDK 1.8 及之后,使用的是元空間存放在本地內(nèi)存中的方式來替代永久代的,這樣就降低了 OOM 發(fā)生的可能性,也是 JRockit 和 HotSpot 融合之后的改動(dòng)之一。

參考 & 鳴謝

openjdk.org/jeps/122

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-09-28 07:34:23

JDK廢棄永久代元空間

2023-06-08 08:04:37

Java8元空間永久代

2024-12-25 15:32:29

2019-10-23 08:16:50

Java8JVM內(nèi)存

2021-12-30 19:36:48

GoDubboJava

2022-01-07 14:05:33

DubboGoJava

2012-04-06 10:35:30

SpringJavaHibernate

2021-08-10 18:54:48

射頻系統(tǒng)SMA

2022-07-13 07:06:47

HTTPSHTTP協(xié)議

2020-07-20 14:09:36

Python編程語言注釋符

2023-10-10 08:24:12

2022-06-26 00:24:57

C語言操作系統(tǒng)語言

2009-07-07 17:18:57

Facelets介紹JSP與Facelet

2025-01-06 08:28:45

C語言操作系統(tǒng)程序

2020-12-25 09:07:38

EclipseCode工具

2025-06-03 06:00:00

margin-topCSS開發(fā)

2022-01-17 22:09:50

JVM方法區(qū)數(shù)據(jù)

2023-11-02 08:20:54

SocketZygoteAndroid

2022-06-01 16:13:51

元宇宙

2023-01-28 13:39:31

Linuxzram
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲免费在线 | 久久久久久久久久久久久9999 | 欧美日韩中文字幕在线播放 | 在线亚洲精品 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 精品国产18久久久久久二百 | 成人深夜福利 | 成人精品国产一区二区4080 | 精品亚洲一区二区 | 日日骚av| 正在播放国产精品 | 中文字幕国产 | 亚洲视频一区在线观看 | 殴美成人在线视频 | 日韩中文电影 | 日韩欧美在线观看视频 | 亚洲国产精品一区二区第一页 | 免费久久久 | 欧美成人一区二免费视频软件 | 我要看免费一级毛片 | 亚洲精品播放 | 亚洲一区二区三区桃乃木香奈 | 超碰免费在 | 一区二区日韩 | 久久综合伊人 | 欧美一区二区 | 欧美福利 | 99国产精品99久久久久久粉嫩 | 中文字幕高清 | 九九亚洲 | 91精品国产综合久久精品 | av一级久久 | 精品欧美一区二区三区久久久小说 | 欧美激情 一区 | 国产亚洲人成a在线v网站 | 国产成人综合一区二区三区 | 成人av一区 | 免费人成激情视频在线观看冫 | 国产午夜三级一区二区三 | 91精品国产91 | 中文字幕四虎 |