java 服務 JVM 參數設置配置


本文為博主原創,轉載請注明出處:

常用JVM 配置參數:

  -Xmx:表示java虛擬機堆區內存可被分配的最大上限,通常為操作系統可用內存的1/4大小。

  -Xms:表示java虛擬機堆區內存初始內存分配的大小,通常為操作系統可用內存的1/64大小即可

  開發過程中,通常會將-Xms 與-Xmx兩個參數的配置相同的值,其目的是為了能夠在java垃圾回收機制清理完堆區后不需要重新分隔計算堆區的大小而浪費資源。

 

  -Xmn :堆內新生代的大小。通過這個值也可以得到老年代的大小:-Xmx減去-Xmn

  整個堆大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小為64m,所以增大年輕代后,將會減小年老代大小。此值對系統性能影響較大,Sun官方推薦配置為整個堆的3/8。

 

-  XX:newSize:表示新生代初始內存的大小,應該小於-Xms的值;

  -XX:MaxnewSize:表示新生代可被分配的內存的最大上限;當然這個值應該小於-Xmx的值;

 

  java虛擬機對非堆區內存配置的兩個參數:
    1、-XX:PermSize:表示非堆區初始內存分配大小(方法區)
    2、-XX:MaxPermSize:表示對非堆區分配的內存的最大上限(方法區)。

 

  -Xnoclassgc

  關閉CLASS的垃圾回收功能,就是虛擬機加載的類,即便是不使用,沒有實例也不會回收。如果一個類20分鍾還沒有使用,虛擬機會卸載這個類。如果這個類再次使用,虛擬機會重新加載這個類,由於虛擬機加載類包含了IO和內存分配的操作,因此加載時會對性能有所影響。對於一般應用,這個參數對性能影響不大。

 

  開啟:-XX:+UseAdaptiveSizePolicy

  關閉:-XX:-UseAdaptiveSizePolicy

  DK 1.8 默認使用 UseParallelGC 垃圾回收器,該垃圾回收器默認啟動了 AdaptiveSizePolicy,會根據GC的情況自動計算計算 Eden、From 和 To 區的大小;

  在 JDK 1.8 中,如果使用 CMS,無論 UseAdaptiveSizePolicy 如何設置,都會將 UseAdaptiveSizePolicy 設置為 false;

 

   -XX:MaxTenuringThreshold=15

  該參數主要是控制新生代需要經歷多少次GC晉升到老年代中的最大閾值。在JVM中用4個bit存儲(放在對象頭中),(1111)所以其最大值是15。

  但並非意味着,對象必須要經歷15次YGC才會晉升到老年代中。例如,當survivor區空間不夠時,便會提前進入到老年代中,但這個次數一定不大於設置的最大閾值。

   

     常見服務的JVM 配置參數:

-Xmn512m -Xms512m -Xmx2048m -XX:NewSize=512M -XX:MaxNewSize=512M -XX:-UseAdaptiveSizePlicy -XX:ParallelGCThreads=16 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:MaxTenuringThreshold=15 -noclassgc

  

  為了比對以上常見JVM 的配置參數是否使用自己服務時,可以先使用 java -jar test.jar 的方式啟動自己的服務,使用默認的JVM 配置觀察 FullGC 以及內存,cpu的使用率 與 以上參數配置時的變化,從而選擇合適自己服務的JVM 配置參數。

   

 


免責聲明!

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



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