波多野结衣 蜜桃视频,国产在线精品露脸ponn,a v麻豆成人,AV在线免费小电影

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

今天我們來(lái)說(shuō)說(shuō)這個(gè) JVM 的相關(guān)知識(shí),因?yàn)槊嬖嚭?jiǎn)直是問(wèn)到麻木的問(wèn)題,那就是關(guān)于 JVM 的相關(guān)知識(shí),今天了不起再次來(lái)和大家聊一下這個(gè)知識(shí),我們從一些比較奇怪的問(wèn)題說(shuō)起,也不說(shuō)那些經(jīng)常會(huì)問(wèn)到的內(nèi)容了,比如 JVM 的垃圾回收機(jī)制什么的。

JDK 的元空間

我們都知道,在 JVM 中,,JVM 內(nèi)存共分為虛擬機(jī)棧、堆、方法區(qū)、程序計(jì)數(shù)器、本地方法棧五個(gè)部分。

他們的作用,了不起給大家整了個(gè)圖解。

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

這就是 JVM 中不同模塊對(duì)應(yīng)的不同的作用。

那么什么是永久代,什么是元空間呢?

永久代:

在jdk7以及jdk7之前,方法區(qū)被稱為永久代(PermGen)

此時(shí)永久代是 JAVA 堆(Java Heap)的一部分,用于存儲(chǔ)類信息、方法信息、常量池信息等靜態(tài)數(shù)據(jù)。

元空間(Metaspace)

元空間不再與堆連續(xù),而是直接存在于本地內(nèi)存中,也就是機(jī)器的內(nèi)存。理論上機(jī)器內(nèi)存有多大,元空間的野心就有多大。

而在JDK1.7之前,HotSpot 虛擬機(jī)把方法區(qū)當(dāng)成永久代來(lái)進(jìn)行垃圾回收。而從 JDK 1.8 開(kāi)始,移除永久代,并把方法區(qū)移至元空間,它位于本地內(nèi)存中,而不是虛擬機(jī)內(nèi)存中。

在Java7時(shí),仍然有永久代,永久代也與堆中的老年代連續(xù),但永久代中存儲(chǔ)的部分?jǐn)?shù)據(jù)已經(jīng)開(kāi)始轉(zhuǎn)移到Java Heap或Native Memory中了,比如:

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

HotSpots取消了永久代,那么是不是也就沒(méi)有方法區(qū)了呢?

當(dāng)然不是,方法區(qū)是一個(gè)規(guī)范,規(guī)范沒(méi)變,它就一直在,只不過(guò)取代永久代的是元空間(Metaspace)而已。

那么它和永久代有什么不同呢?這就是個(gè)問(wèn)題了。

那么他們的不同點(diǎn)都有哪些呢?

元空間和永久代的不同點(diǎn):

存儲(chǔ)位置不同

為什么說(shuō)存儲(chǔ)位置不同呢?

永久代在物理上是堆的一部分,和新生代、老年代的地址是連續(xù)的,而元空間屬于本地內(nèi)存。

存儲(chǔ)內(nèi)容不同

在原來(lái)的永久代劃分中,永久代用來(lái)存放類的元數(shù)據(jù)信息、靜態(tài)變量以及常量池等。現(xiàn)在類的元信息存儲(chǔ)在元空間中,靜態(tài)變量和常量池等并入堆中,相當(dāng)于原來(lái)的永久代中的數(shù)據(jù),被元空間和堆內(nèi)存給瓜分了。

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

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

這時(shí)候我們就有了新的問(wèn)題,為什么要廢棄永久代,而使用元空間來(lái)進(jìn)行替換呢?

首先我們得知道,在原來(lái)的永久代劃分中,永久代需要存放類的元數(shù)據(jù)、靜態(tài)變量和常量等。

它的大小不容易確定,因?yàn)檫@其中有很多影響因素,比如類的總數(shù),常量池的大小和方法數(shù)量等。

-XX:MaxPermSize 指定太小很容易造成永久代內(nèi)存溢出。

第二個(gè)原因則是移除永久代是為融合HotSpot VM與 JRockit VM而做出的努力,因?yàn)镴Rockit沒(méi)有永久代,不需要配置永久代。

第三個(gè)原因永久代會(huì)為GC帶來(lái)不必要的復(fù)雜度,并且回收效率偏低。

其實(shí)還有的人覺(jué)得,Oracle收購(gòu)了jrockit虛擬機(jī),要將它和HotSpot做整合,而jrockit是沒(méi)有永久代的而且jrockit用戶也沒(méi)有配置永久代大小的習(xí)慣所以將廢棄永久代與jrockit保持一致采用元空間實(shí)現(xiàn)方法區(qū)。了不起覺(jué)得也有一定的道理。

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

而實(shí)際上永久代不是本地內(nèi)存是虛擬機(jī)內(nèi)存也就是是屬于JVM進(jìn)程的內(nèi)存,所以如果設(shè)置過(guò)大就回造成內(nèi)存的浪費(fèi),空余部分內(nèi)存JVM進(jìn)程本身用不到也不讓其他進(jìn)程使用。

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

所以,大家知道為什么要替換了吧。

既然都已經(jīng)要替換,那么一定是廢除永久代是對(duì) JVM 來(lái)說(shuō),肯定是好處多多的。

廢除永久代的好處

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

既然我們?cè)谶@里說(shuō)到這個(gè)Metaspace,那么肯定得說(shuō)說(shuō)這個(gè) Metaspace 的相關(guān)參數(shù)都是代表的什么配置。

Metaspace

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

分享到:
標(biāo)簽:JDK
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定