您好,登錄后才能下訂單哦!
1.元空間:
元空間的本質(zhì)和永久代類似,都是對JVM規(guī)范中方法區(qū)的實現(xiàn)。不過元空間與永久代之間最大的區(qū)別在于:元空間并不在虛擬機中,而是使用本地內(nèi)存。因此,默認情況下,元空間的大小僅受本地內(nèi)存限制。
但可以通過以下參數(shù)來指定元空間的大小:?
-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)。
-XX:MaxMetaspaceSize=N?
這個參數(shù)用于限制Metaspace增長的上限,防止因為某些情況導(dǎo)致Metaspace無限的使用本地內(nèi)存,影響到其他程序。在本機上該參數(shù)的默認值為4294967295B(大約4096MB)。
-XX:MinMetaspaceFreeRatio=N?
當進行過Metaspace GC之后,會計算當前Metaspace的空閑空間比,如果空閑比小于這個參數(shù),那么虛擬機將增長Metaspace的大小。在本機該參數(shù)的默認值為40,也就是40%。設(shè)置該參數(shù)可以控制Metaspace的增長的速度,太小的值會導(dǎo)致Metaspace增長的緩慢,Metaspace的使用逐漸趨于飽和,可能會影響之后類的加載。而太大的值會導(dǎo)致Metaspace增長的過快,浪費內(nèi)存。
-XX:MaxMetasaceFreeRatio=N?
當進行過Metaspace GC之后, 會計算當前Metaspace的空閑空間比,如果空閑比大于這個參數(shù),那么虛擬機會釋放Metaspace的部分空間。在本機該參數(shù)的默認值為70,也就是70%。
-XX:MaxMetaspaceExpansion=N?
Metaspace增長時的最大幅度。在本機上該參數(shù)的默認值為5452592B(大約為5MB)。
-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
免責(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)容。