40.JVM方法區(元空間)大小設置(-XX:MetaspaceSize和-XX:MaxMetaspaceSize)


 

1.方法區內存大小設置

1.方法區的大小可以不是固定的,JVM可以根據應用需要自動調整。
a)JDK7及以前(了解):-XX:PermSize設置永久代初始大小。-XX:MaxPermSize設置永久代最大可分配空間。(JDK7目前已經很少用了,這兩個參數在JDK8及以后已經沒有了,所以不必掌握,了解一下)
在這里插入圖片描述
b) JDK8及以后:可以使用-XX:MetaspaceSize-XX:MaxMetaspaceSize設置元空間初始大小以及最大可分配大小。
例子:設置初始大小是100M,最大可分配空間也是100M-XX:MetaspaceSize=100m -XX:MaxMetaspaceSize=100m
1.如果不指定元空間的大小,默認情況下,元空間最大的大小是系統內存的大小,元空間一直擴大,虛擬機可能會消耗完所有的可用系統內存。
2.如果元空間內存不夠用,就會報OOM
3.默認情況下,對應一個64位的服務端JVM來說,其默認的-XX:MetaspaceSize值為21MB,這就是初始的高水位線,一旦元空間的大小觸及這個高水位線,就會觸發Full GC並會卸載沒有用的類,然后高水位線的值將會被重置。
4.從第3點可以知道,如果初始化的高水位線設置過低,會頻繁的觸發Full GC,高水位線會被多次調整。所以為了避免頻繁GC以及調整高水位線,建議將-XX:MetaspaceSize設置為較高的值,而-XX:MaxMetaspaceSize不進行設置。
在這里插入圖片描述

2.如何解決OOM問題?(了解)

下面的內容先了解一些。
在這里插入圖片描述

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM