溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Metaspace元空間

發(fā)布時間:2020-06-26 15:09:46 來源:網(wǎng)絡(luò) 閱讀:732 作者:愛與夢想 欄目:軟件技術(shù)

1.元空間:

元空間的本質(zhì)和永久代類似,都是對JVM規(guī)范中方法區(qū)的實現(xiàn)。不過元空間與永久代之間最大的區(qū)別在于:元空間并不在虛擬機中,而是使用本地內(nèi)存。因此,默認情況下,元空間的大小僅受本地內(nèi)存限制。

但可以通過以下參數(shù)來指定元空間的大小:?

  1. -XX:MetaspaceSize=N?
    這個參數(shù)是初始化的Metaspace大小,該值越大觸發(fā)Metaspace GC的時機就越晚。隨著GC的到來,虛擬機會根據(jù)實際情況調(diào)控Metaspace的大小,可能增加上線也可能降低。在默認情況下,這個值大小根據(jù)不同的平臺在12M到20M浮動。使用java -XX:+PrintFlagsInitial命令查看本機的初始化參數(shù),-XX:Metaspacesize為21810376B(大約20.8M)。

  2. -XX:MaxMetaspaceSize=N?
    這個參數(shù)用于限制Metaspace增長的上限,防止因為某些情況導(dǎo)致Metaspace無限的使用本地內(nèi)存,影響到其他程序。在本機上該參數(shù)的默認值為4294967295B(大約4096MB)。

  3. -XX:MinMetaspaceFreeRatio=N?
    當進行過Metaspace GC之后,會計算當前Metaspace的空閑空間比,如果空閑比小于這個參數(shù),那么虛擬機將增長Metaspace的大小。在本機該參數(shù)的默認值為40,也就是40%。設(shè)置該參數(shù)可以控制Metaspace的增長的速度,太小的值會導(dǎo)致Metaspace增長的緩慢,Metaspace的使用逐漸趨于飽和,可能會影響之后類的加載。而太大的值會導(dǎo)致Metaspace增長的過快,浪費內(nèi)存。

  4. -XX:MaxMetasaceFreeRatio=N?
    當進行過Metaspace GC之后, 會計算當前Metaspace的空閑空間比,如果空閑比大于這個參數(shù),那么虛擬機會釋放Metaspace的部分空間。在本機該參數(shù)的默認值為70,也就是70%。

  5. -XX:MaxMetaspaceExpansion=N?
    Metaspace增長時的最大幅度。在本機上該參數(shù)的默認值為5452592B(大約為5MB)。

  6. -XX:MinMetaspaceExpansion=N?
    Metaspace增長時的最小幅度。在本機上該參數(shù)的默認值為340784B(大約330KB為)。


2.元空間內(nèi)存管理

元空間的內(nèi)存管理由元空間虛擬機來完成。先前,對于類的元數(shù)據(jù)我們需要不同的垃圾回收器進行處理,現(xiàn)在只需要執(zhí)行元空間虛擬機的C++代碼即可完成。

在元空間中,類和其元數(shù)據(jù)的生命周期和其對應(yīng)的類加載器是相同的。

話句話說,只要類加載器存活,其加載的類的元數(shù)據(jù)也是存活的,因而不會被回收掉。?
準確的來說,每一個類加載器的存儲區(qū)域都稱作一個元空間,所有的元空間合在一起就是我們一直說的元空間。

當一個類加載器被垃圾回收器標記為不再存活,其對應(yīng)的元空間會被回收。

可以參考文章:

https://blog.csdn.net/bolg_hero/article/details/78189621

https://www.cnblogs.com/williamjie/p/9558136.html

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI