深入理解JVM:元空間大小詳細(xì)解析-創(chuàng)新互聯(lián)

前言

創(chuàng)新互聯(lián)公司為客戶提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站制作、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁設(shè)計(jì)、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、成都手機(jī)網(wǎng)站制作等網(wǎng)站方面業(yè)務(wù)。

JVM加載類的時(shí)候,需要記錄類的元數(shù)據(jù),這些數(shù)據(jù)會(huì)保存在一個(gè)單獨(dú)的內(nèi)存區(qū)域內(nèi),在Java 7里,這個(gè)空間被稱為永久代(Permgen),在Java 8里,使用元空間(Metaspace)代替了永久代。永久代和元空間保存的數(shù)據(jù)并不完全一樣,永久代中還保存另一些與類的元數(shù)據(jù)無關(guān)的雜項(xiàng)。

深入理解JVM:元空間大小詳細(xì)解析

在Java 7里將字符串常量從永久代移動(dòng)到了堆區(qū)域,但是永久代并沒有完全改造完成。直到Java 8,永久代的改造才算完全搞定,在元空間中保存的數(shù)據(jù)比永久代中純粹很多,就是類的元數(shù)據(jù),這些信息只對(duì)編譯期或JVM的運(yùn)行時(shí)有用。

深入理解JVM:元空間大小詳細(xì)解析

理論學(xué)習(xí)

使用Java 8以后,關(guān)于元空間的JVM參數(shù)有兩個(gè):-XX:MetaspaceSize=N和 -XX:MaxMetaspaceSize=N,對(duì)于64位JVM來說,元空間的默認(rèn)初始大小是20.75MB,默認(rèn)的元空間的大值是無限。MaxMetaspaceSize用于設(shè)置metaspace區(qū)域的大值,這個(gè)值可以通過mxbean中的MemoryPoolBean獲取到,如果這個(gè)參數(shù)沒有設(shè)置,那么就是通過mxbean拿到的大值是-1,表示無窮大。

由于調(diào)整元空間的大小需要Full GC,這是非常昂貴的操作,如果應(yīng)用在啟動(dòng)的時(shí)候發(fā)生大量Full GC,通常都是由于永久代或元空間發(fā)生了大小調(diào)整,基于這種情況,一般建議在JVM參數(shù)中將MetaspaceSize和MaxMetaspaceSize設(shè)置成一樣的值,并設(shè)置得比初始值要大,對(duì)于8G物理內(nèi)存的機(jī)器來說,一般我會(huì)將這兩個(gè)值都設(shè)置為256M(PS:讀者可以根據(jù)自己的實(shí)際情況再調(diào)整)。歡迎大家關(guān)注我的公種浩【程序員追風(fēng)】,文章都會(huì)在里面更新,整理的資料也會(huì)放在里面。

深入理解JVM:元空間大小詳細(xì)解析

源碼分析

MetaspaceSize表示metaspace首次使用不夠而觸發(fā)FGC的閾值,只對(duì)觸發(fā)起作用,原因是:垃圾搜集器內(nèi)部是根據(jù)變量 _capacity_until_GC來判斷metaspace區(qū)域是否達(dá)到閾值的,初始化代碼如下所示:

void?MetaspaceGC::initialize()?{
?//?Set?the?high-water?mark?to?MaxMetapaceSize?during?VM?initializaton?since
?//?we?can't?do?a?GC?during?initialization.
??_capacity_until_GC?=?MaxMetaspaceSize;
}

GC收集器會(huì)在發(fā)生對(duì)metaspace的回收會(huì),會(huì)計(jì)算新的capacityuntil_GC值,以后發(fā)生FGC就跟MetaspaceSize沒有關(guān)系了。

深入理解JVM:元空間大小詳細(xì)解析

如果不設(shè)置MetaspaceSize,則默認(rèn)的capacityuntil_GC為20M左右,具體代碼如下:

深入理解JVM:元空間大小詳細(xì)解析

最后

歡迎大家一起交流,喜歡文章記得點(diǎn)個(gè)贊喲,感謝支持!

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。

文章名稱:深入理解JVM:元空間大小詳細(xì)解析-創(chuàng)新互聯(lián)
URL分享:http://muchs.cn/article24/ijjje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)小程序開發(fā)、域名注冊(cè)、網(wǎng)站收錄、移動(dòng)網(wǎng)站建設(shè)定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站