JVM 參數配置及詳解 -Xms -Xmx -Xmn -Xss 調優總結(點贊收藏)

堆大小設置

JVM 中最大堆大小有三方面限制:

  ①、相關操作系統的數據模型(32-bt還是64-bit)限制;

  ②、系統的可用虛擬內存限制;

  ③、系統的可用物理內存限制.

  32位系統 下,一般限制在1.5G~2G;64為操作系統對內存無限制.在Windows Server 2003 系統,3.5G物理內存,JDK5.0下測試,最大可設置為1478m.

  堆內存邏輯上分為三部分:新生區+養老區+永久代

  物理上分為兩部分:新生+養老

  Jdk1.7之前,有永久代,但已經逐步“去永久代”

  Jdk1.8之後,無永久代,由元空間替代典型設置:

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k①、-Xmx3550m:設置JVM最大可用內存為3550M.②、-Xms3550m:設置JVM促使內存為3550m.此值可以設置與-Xmx相同,以避免每次垃圾回收完成後JVM重新分配內存.③、-Xmn2g:設置年輕代大小為2G.整個堆大小=年輕代大小 + 年老代大小 + 持久代大小.持久代一般固定大小為64m,所以增大年輕代後,將會減小年老代大小.此值對系統性能影響較大,Sun官方推薦配置為整個堆的3/8.④、-Xss128k:設置每個線程的堆棧大小.JDK5.0以後每個線程堆棧大小為1M,以前每個線程堆棧大小為256K.更具應用的線程所需內存大小進行 調整.在相同物理內存下,減小這個值能生成更多的線程.但是操作系統對一個進程內的線程數還是有限制的,不能無限生成,經驗值在3000~5000左右.

java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0①、-XX:NewRatio=4:設置年輕代(包括Eden和兩個Survivor區)與年老代的比值(除去持久代).設置為4,則年輕代與年老代所占比值為1:4,年輕代占整個堆棧的1/5②、-XX:SurvivorRatio=4:設置年輕代中Eden區與Survivor區的大小比值.設置為4,則兩個Survivor區與一個Eden區的比值為2:4,一個Survivor區占整個年輕代的1/6③、-XX:MaxPermSize=16m:設置持久代大小為16m.④、-XX:MaxTenuringThreshold=0:設置垃圾最大年齡.如果設置為0的話,則年輕代對象不經過Survivor區,直接進入年老代. 對於年老代比較多的應用,可以提高效率.如果將此值設置為一個較大值,則年輕代對象會在Survivor區進行多次復制,這樣可以增加對象再年輕代的存活 時間,增加在年輕代即被回收的概論.

回收器選擇JVM給瞭三種選擇:串行收集器,並行收集器,並發收集器,但是串行收集器隻適用於小數據量的情況,所以這裡的選擇主要針對並行收集器和並發收集器.默認 情況下,JDK5.0以前都是使用串行收集器,如果想使用其他收集器需要在啟動時加入相應參數.JDK5.0以後,JVM會根據當前系統配置進行判斷.

吞吐量優先的並行收集器如上文所述,並行收集器主要以到達一定的吞吐量為目標,適用於科學技術和後臺處理等.

典型配置:

java -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20

发表回复

相关推荐

《潘氏源流史》之十一:潘佑后裔初探

潘佑后裔初探 潘佑,生于937年①,卒于973年②。幽州人③。他的祖父潘贵,是刘仁恭(唐末藩镇割据者之一)手下的将领,父亲潘 ...

· 25分钟前

全新的2023款豐田皇冠(Toyota Crown)

全新的2023款豐田皇冠(Toyota Crown)以其獨特的外觀,將大膽的設計風格帶到瞭豐田轎車系列的頂端。憑借巨大的車輪、流暢的...

· 33分钟前

一文讀懂微內核

2019年8月9日華為 餘承東 發佈HarmonyOS 1.0,HarmonyOS的發佈將一個計算機領域內非常專業的詞帶到瞭廣大公眾的視線內,這就...

· 37分钟前

加油打工人——《中國飛俠》

今天聊聊電影《中國飛俠》。片名China Hero (2020)。看到本片主演是許君聰、李琦時,我還以為《中國飛俠》是一部喜劇電影,會...

· 37分钟前

楚味荆州 | 飘香的葱油饼,传统与改良你更爱哪种

在荆州,葱油饼代表的不仅仅是一种清晨街道小吃,更是儿时的美好回忆,是学校门口的葱油香,是过早摊头前排的长队。油润酥香 ...

· 41分钟前