首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JVM -Xms -Xmx 設置相等避免 GC 後調整堆大小開銷

     編輯:程式設計疑難解答

問題

為什麼建議 -Xms 和 -Xmx 設置相等?動態調整不是更合理嗎?

權威回答

設置 -Xms、-Xmx 相等以避免在每次 GC 後調整堆的大小。

深度解析

  • 動態調整觸發 Full GC(Serial/Parallel GC)或並發標記整理(CMS/G1),停頓明顯。
  • 擴容需向 OS 申請內存、零填充;縮容需釋放內存、可能觸發整理。
  • 固定堆(-Xms=-Xmx)啟動即佔滿,配合 -XX:+AlwaysPreTouch 預先觸發頁錯誤,運行期零調整開銷,GC 行為確定性最高。
  • 容器環境(Docker/K8s)必須固定堆,否則 JVM 感知宿主機總內存而非容器限制,極易 OOM Kill。

同理

-XX:NewSize = -XX:MaxNewSize、-XX:PermSize = -XX:MaxPermSize (JDK7) / -XX:MetaspaceSize = -XX:MaxMetaspaceSize (JDK8+)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved