AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

JDK為什么廢棄永久代,而引入元空間

來源: 責(zé)編: 時間:2023-09-28 10:05:43 312觀看
導(dǎo)讀今天我們來說說這個 JVM 的相關(guān)知識,因?yàn)槊嬖嚭喼笔菃柕铰槟镜膯栴},那就是關(guān)于 JVM 的相關(guān)知識,今天了不起再次來和大家聊一下這個知識,我們從一些比較奇怪的問題說起,也不說那些經(jīng)常會問到的內(nèi)容了,比如 JVM 的垃圾回收機(jī)

今天我們來說說這個 JVM 的相關(guān)知識,因?yàn)槊嬖嚭喼笔菃柕铰槟镜膯栴},那就是關(guān)于 JVM 的相關(guān)知識,今天了不起再次來和大家聊一下這個知識,我們從一些比較奇怪的問題說起,也不說那些經(jīng)常會問到的內(nèi)容了,比如 JVM 的垃圾回收機(jī)制什么的。Snc28資訊網(wǎng)——每日最新資訊28at.com

JDK 的元空間

我們都知道,在 JVM 中,,JVM 內(nèi)存共分為虛擬機(jī)棧、堆、方法區(qū)、程序計(jì)數(shù)器、本地方法棧五個部分。Snc28資訊網(wǎng)——每日最新資訊28at.com

他們的作用,了不起給大家整了個圖解。Snc28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Snc28資訊網(wǎng)——每日最新資訊28at.com

這就是 JVM 中不同模塊對應(yīng)的不同的作用。Snc28資訊網(wǎng)——每日最新資訊28at.com

那么什么是永久代,什么是元空間呢?Snc28資訊網(wǎng)——每日最新資訊28at.com

永久代:

在jdk7以及jdk7之前,方法區(qū)被稱為永久代(PermGen)Snc28資訊網(wǎng)——每日最新資訊28at.com

此時永久代是 Java 堆(Java Heap)的一部分,用于存儲類信息、方法信息、常量池信息等靜態(tài)數(shù)據(jù)。Snc28資訊網(wǎng)——每日最新資訊28at.com

元空間(Metaspace)

元空間不再與堆連續(xù),而是直接存在于本地內(nèi)存中,也就是機(jī)器的內(nèi)存。理論上機(jī)器內(nèi)存有多大,元空間的野心就有多大。Snc28資訊網(wǎng)——每日最新資訊28at.com

而在JDK1.7之前,HotSpot 虛擬機(jī)把方法區(qū)當(dāng)成永久代來進(jìn)行垃圾回收。而從 JDK 1.8 開始,移除永久代,并把方法區(qū)移至元空間,它位于本地內(nèi)存中,而不是虛擬機(jī)內(nèi)存中。Snc28資訊網(wǎng)——每日最新資訊28at.com

在Java7時,仍然有永久代,永久代也與堆中的老年代連續(xù),但永久代中存儲的部分?jǐn)?shù)據(jù)已經(jīng)開始轉(zhuǎn)移到Java Heap或Native Memory中了,比如:Snc28資訊網(wǎng)——每日最新資訊28at.com

  • 符號引用(Symbols)轉(zhuǎn)移到了Native Memory
  • 字符串常量池(interned strings)轉(zhuǎn)移到了Java Heap
  • 類的靜態(tài)變量(class statics)轉(zhuǎn)移到了Java Heap

HotSpots取消了永久代,那么是不是也就沒有方法區(qū)了呢?Snc28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)然不是,方法區(qū)是一個規(guī)范,規(guī)范沒變,它就一直在,只不過取代永久代的是元空間(Metaspace)而已。Snc28資訊網(wǎng)——每日最新資訊28at.com

那么它和永久代有什么不同呢?這就是個問題了。Snc28資訊網(wǎng)——每日最新資訊28at.com

那么他們的不同點(diǎn)都有哪些呢?Snc28資訊網(wǎng)——每日最新資訊28at.com

元空間和永久代的不同點(diǎn):Snc28資訊網(wǎng)——每日最新資訊28at.com

存儲位置不同

為什么說存儲位置不同呢?Snc28資訊網(wǎng)——每日最新資訊28at.com

永久代在物理上是堆的一部分,和新生代、老年代的地址是連續(xù)的,而元空間屬于本地內(nèi)存。Snc28資訊網(wǎng)——每日最新資訊28at.com

存儲內(nèi)容不同

在原來的永久代劃分中,永久代用來存放類的元數(shù)據(jù)信息、靜態(tài)變量以及常量池等。現(xiàn)在類的元信息存儲在元空間中,靜態(tài)變量和常量池等并入堆中,相當(dāng)于原來的永久代中的數(shù)據(jù),被元空間和堆內(nèi)存給瓜分了。Snc28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Snc28資訊網(wǎng)——每日最新資訊28at.com

為什么要廢棄永久代,而使用元空間來進(jìn)行替換呢?

這時候我們就有了新的問題,為什么要廢棄永久代,而使用元空間來進(jìn)行替換呢?Snc28資訊網(wǎng)——每日最新資訊28at.com

首先我們得知道,在原來的永久代劃分中,永久代需要存放類的元數(shù)據(jù)、靜態(tài)變量和常量等。Snc28資訊網(wǎng)——每日最新資訊28at.com

它的大小不容易確定,因?yàn)檫@其中有很多影響因素,比如類的總數(shù),常量池的大小和方法數(shù)量等。Snc28資訊網(wǎng)——每日最新資訊28at.com

-XX:MaxPermSize 指定太小很容易造成永久代內(nèi)存溢出。Snc28資訊網(wǎng)——每日最新資訊28at.com

第二個原因則是移除永久代是為融合HotSpot VM與 JRockit VM而做出的努力,因?yàn)镴Rockit沒有永久代,不需要配置永久代。Snc28資訊網(wǎng)——每日最新資訊28at.com

第三個原因永久代會為GC帶來不必要的復(fù)雜度,并且回收效率偏低。Snc28資訊網(wǎng)——每日最新資訊28at.com

其實(shí)還有的人覺得,Oracle收購了jrockit虛擬機(jī),要將它和HotSpot做整合,而jrockit是沒有永久代的而且jrockit用戶也沒有配置永久代大小的習(xí)慣所以將廢棄永久代與jrockit保持一致采用元空間實(shí)現(xiàn)方法區(qū)。了不起覺得也有一定的道理。Snc28資訊網(wǎng)——每日最新資訊28at.com

畢竟兩大虛擬機(jī)要做統(tǒng)一永久代和元空間勢必要廢棄一個,而永久代的痛點(diǎn)是在于大小不好設(shè)置,設(shè)置小了會頻繁發(fā)生GC,而且永久代的GC是效率很低且費(fèi)時間,因?yàn)榕袛嘁粋€類是否可以被回收的條件很苛刻且費(fèi)時,會占用資源影響用戶線程的執(zhí)行導(dǎo)致整體吞吐量變低。Snc28資訊網(wǎng)——每日最新資訊28at.com

而實(shí)際上永久代不是本地內(nèi)存是虛擬機(jī)內(nèi)存也就是是屬于JVM進(jìn)程的內(nèi)存,所以如果設(shè)置過大就回造成內(nèi)存的浪費(fèi),空余部分內(nèi)存JVM進(jìn)程本身用不到也不讓其他進(jìn)程使用。Snc28資訊網(wǎng)——每日最新資訊28at.com

如果使用元空間的話直接使用的是本地內(nèi)存,默認(rèn)也是不加以控制最大值的可以自己擴(kuò)張,這樣可以減少GC提升吞吐量,再有哪怕設(shè)置了最大值由于使用的是直接內(nèi)存,空余的內(nèi)存也是允許其他進(jìn)程使用的。Snc28資訊網(wǎng)——每日最新資訊28at.com

所以,大家知道為什么要替換了吧。Snc28資訊網(wǎng)——每日最新資訊28at.com

既然都已經(jīng)要替換,那么一定是廢除永久代是對 JVM 來說,肯定是好處多多的。Snc28資訊網(wǎng)——每日最新資訊28at.com

廢除永久代的好處

  • 由于類的元數(shù)據(jù)分配在本地內(nèi)存中,元空間的最大可分配空間就是系統(tǒng)可用內(nèi)存空間。不會遇到永久代存在時的內(nèi)存溢出錯誤。
  • 將運(yùn)行時常量池從PermGen分離出來,與類的元數(shù)據(jù)分開,提升類元數(shù)據(jù)的獨(dú)立性。
  • 將元數(shù)據(jù)從PermGen剝離出來到Metaspace,可以提升對元數(shù)據(jù)的管理同時提升GC效率。

既然我們在這里說到這個Metaspace,那么肯定得說說這個 Metaspace 的相關(guān)參數(shù)都是代表的什么配置。Snc28資訊網(wǎng)——每日最新資訊28at.com

Metaspace

  • -XX:MetaspaceSize,初始空間大小,達(dá)到該值就會觸發(fā)垃圾收集進(jìn)行類型卸載,同時GC會對該值進(jìn)行調(diào)整:如果釋放了大量的空間,就適當(dāng)降低該值;如果釋放了很少的空間,那么在不超過MaxMetaspaceSize時,適當(dāng)提高該值。
  • -XX:MaxMetaspaceSize,最大空間,默認(rèn)是沒有限制的。如果沒有使用該參數(shù)來設(shè)置類的元數(shù)據(jù)的大小,其最大可利用空間是整個系統(tǒng)內(nèi)存的可用空間。JVM也可以增加本地內(nèi)存空間來滿足類元數(shù)據(jù)信息的存儲。但是如果沒有設(shè)置最大值,則可能存在bug導(dǎo)致Metaspace的空間在不停的擴(kuò)展,會導(dǎo)致機(jī)器的內(nèi)存不足;進(jìn)而可能出現(xiàn)swap內(nèi)存被耗盡;最終導(dǎo)致進(jìn)程直接被系統(tǒng)直接kill掉。 如果設(shè)置了該參數(shù),當(dāng)Metaspace剩余空間不足,會拋出:java.lang.OutOfMemoryError: Metaspace space
  • -XX:MinMetaspaceFreeRatio,在GC之后,最小的Metaspace剩余空間容量的百分比,減少為分配空間所導(dǎo)致的垃圾收集
  • -XX:MaxMetaspaceFreeRatio,在GC之后,最大的Metaspace剩余空間容量的百分比,減少為釋放空間所導(dǎo)致的垃圾收集

本文鏈接:http://www.tebozhan.com/showinfo-26-11818-0.htmlJDK為什么廢棄永久代,而引入元空間

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Postman腳本批量轉(zhuǎn)接口自動化用例

下一篇: DevOps優(yōu)秀實(shí)踐之用戶與權(quán)限

標(biāo)簽:
  • 熱門焦點(diǎn)
  • Redmi Buds 4開箱簡評:才199還有降噪 可以無腦入

    在上個月舉辦的Redmi Note11T Pro系列新機(jī)發(fā)布會上,除了兩款手機(jī)新品之外,Redmi還帶來了兩款TWS真無線藍(lán)牙耳機(jī)產(chǎn)品,Redmi Buds 4和Redmi Buds 4 Pro,此前我們在Redmi Note11T
  • 28個SpringBoot項(xiàng)目中常用注解,日常開發(fā)、求職面試不再懵圈

    前言在使用SpringBoot開發(fā)中或者在求職面試中都會使用到很多注解或者問到注解相關(guān)的知識。本文主要對一些常用的注解進(jìn)行了總結(jié),同時也會舉出具體例子,供大家學(xué)習(xí)和參考。注解
  • 把LangChain跑起來的三個方法

    使用LangChain開發(fā)LLM應(yīng)用時,需要機(jī)器進(jìn)行GLM部署,好多同學(xué)第一步就被勸退了,那么如何繞過這個步驟先學(xué)習(xí)LLM模型的應(yīng)用,對Langchain進(jìn)行快速上手?本片講解3個把LangChain跑起來
  • 只需五步,使用start.spring.io快速入門Spring編程

    步驟1打開https://start.spring.io/,按照屏幕截圖中的內(nèi)容創(chuàng)建項(xiàng)目,添加 Spring Web 依賴項(xiàng),并單擊“生成”按鈕下載 .zip 文件,為下一步做準(zhǔn)備。請?jiān)谶M(jìn)入步驟2之前進(jìn)行解壓。圖
  • 消費(fèi)結(jié)構(gòu)調(diào)整丨巨頭低價博弈,拼多多還卷得動嗎?

    來源:征探財(cái)經(jīng)作者:陳香羽隨著流量紅利的退潮,電商的存量博弈越來越明顯。曾經(jīng)主攻中高端與品質(zhì)的淘寶天貓、京東重拾“低價”口號。而過去與他們錯位競爭的拼多多,靠
  • 花7萬退貨退款無門:誰在縱容淘寶珠寶商家造假?

    來源:極點(diǎn)商業(yè)作者:楊銘在淘寶購買珠寶玉石后,因?yàn)楸WC金不夠賠付,店鋪關(guān)閉,退貨退款難、維權(quán)無門的比比皆是。“提供相關(guān)產(chǎn)品鑒定證書,支持全國復(fù)檢,可以30天無理由退換貨。&
  • 阿里大調(diào)整

    來源:產(chǎn)品劉有媒體報(bào)道稱,近期淘寶天貓集團(tuán)啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項(xiàng),目前已形成一個初步的“征求意見版”:1、取消P序列
  • iQOO Neo8 Pro真機(jī)諜照曝光:天璣9200+和V1+旗艦雙芯加持

    去年10月,iQOO推出了iQOO Neo7系列機(jī)型,不僅搭載了天璣9000+,而且是同價位唯一一款天璣9000+直屏旗艦,一經(jīng)上市便受到了用戶的廣泛關(guān)注。在時隔半年后,
  • 聯(lián)想YOGA 16s 2022筆記本將要推出,屏幕支持觸控功能

    聯(lián)想此前宣布,將于11月2日19:30召開聯(lián)想秋季輕薄新品發(fā)布會,推出聯(lián)想 YOGA 16s 2022 筆記本等新品。官方稱,YOGA 16s 2022 筆記本將搭載 16 英寸屏幕,并且是一
Top