首先,Xmn、Xms、Xmx、Xss都是JVM對內存的配置參數,咱們能夠根據不一樣須要區修改這些參數,以達到運行程序的最好效果。html
Xms、Xmxjava
-Xms、-Xmx分配用來設置進程堆內存的最小大小和最大大小。通常來講,爲了不頻繁的堆內存震盪,致使系統性能降低,這兩個值設爲相等。jvm
Xmn性能
-Xmn用來設置堆內新生代的大小。經過這個值咱們也能夠獲得老生代的大小:-Xmx減去-Xmn優化
Xssspa
-Xss設置每一個線程可以使用的內存大小。操作系統
在相同物理內存下,減少這個值能生成更多的線程。固然操做系統對一個進程內的線程數仍是有限制的,不能無限生成,經驗值在3000~5000左右。線程
除了這些配置,JVM還有很是多的配置,經常使用的以下:日誌
-XX:PermSize、-XX:MaxPermSize
分配用來設置永久代的最小大小和最大大小。Java 8之後移除了方法區,取而代之的是本地元空間Metaspace,大小由-XX:MetaspaceSize和-XX:MaxMetaspaceSize調節。htm
-XX:MaxTenuringThreshold
設置轉入老生代的存活次數。若是是0,則直接跳過新生代進入老生代。
-XX:NewRatio
設置老生代和新生代的比值,例如該值爲3,則表示新生代與老生代比值爲1:3。
–XX:+SurvivorRatio 設置Eden區與survivor的比例
-XX:PetenureSizeThreshold
設置大對象進入年老代的閾值(單位:byte),若是對象大小超過這個值,則直接在年老代進行分配,只對串行收集器和年輕代並行收集器有效,並行回收收集器不識別這個參數。
-XX:+PrintGCDetails
打印GC回收的過程日誌
-XX:+UseParallelGC 新生代使用並行GC回收,能夠儘量的減小GC回收的時間
–XX:ParallelGC-Threads:設置用於垃圾回收的線程數,一般狀況下,能夠設置和 CPU 數量相等。但在 CPU 數量比較多的狀況下,設置相對較小的數值也是合理的;
–XX:+UseParallelOldGC:設置年老代使用並行回收收集器。
參考:JVM優化經驗總結