【JVM】調優筆記3-----JVM參數配置 JDK1.8

一.關於JVM參數配置,有多種途徑html

1.在tomcat中直接配置的算法

  打開tomcat的安裝目錄, 在bin下修改catalina.bat文件tomcat

添加以下:服務器

set "JAVA_OPTS=-Xmx300m -Xms300m -Xmn100m -XX:SurvivorRatio=8"併發

在這個位置:優化

啓動tomcat便可起做用。spa

 

2.使用Myecplise,配置JVM參數操作系統

雙擊Tomcat,打開在以下位置,配置:.net

-Xmx300m
-Xms300m
-Xmn100m
-XX:SurvivorRatio=8線程

在以下位置便可。

 

 而後啓動項目,便可起做用。

 

 

 

二.標準配置

-Xmx300m 
-Xms300m
-Xmn100m
-XX:SurvivorRatio=8

-XX:+UseG1GC
-XX:MaxTenuringThreshold=14
-XX:ParallelGCThreads=8
-XX:ConcGCThreads=8


-XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+TraceClassLoading -XX:+PrintClassHistogram

 

進行JVM的優化的這些參數

解釋以下:

-Xmx300m                         最大堆大小
-Xms300m                        初始堆大小
-Xmn100m                         年輕代大小
-XX:SurvivorRatio=8              Eden區與Survivor區的大小比值,設置爲8,則兩個Survivor區與一個Eden區的比值爲2:8,一個Survivor區佔整個年輕代的1/10

-XX:+UseG1GC                      使用 G1 (Garbage First) 垃圾收集器    
-XX:MaxTenuringThreshold=14          提高年老代的最大臨界值(tenuring threshold). 默認值爲 15[每次GC,增長1歲,到15歲若是還要存活,放入Old區]
-XX:ParallelGCThreads=8              設置垃圾收集器在並行階段使用的線程數[通常設置爲本機CPU線程數相等,即本機同時能夠處理的個數,設置過大也沒有用]
-XX:ConcGCThreads=8                併發垃圾收集器使用的線程數量


-XX:+DisableExplicitGC          禁止在啓動期間顯式調用System.gc()
-XX:+HeapDumpOnOutOfMemoryError OOM時導出堆到文件 -XX:HeapDumpPath=d:/a.dump    導出OOM的路徑 -XX:+PrintGCDetails      打印GC詳細信息 -XX:+PrintGCTimeStamps     打印CG發生的時間戳 -XX:+PrintHeapAtGC       每一次GC前和GC後,都打印堆信息 -XX:+TraceClassLoading     監控類的加載 -XX:+PrintClassHistogram       按下Ctrl+Break後,打印類的信息

 

 

三.咱們把GC分紅4種類型

1. SerialGC
參數-XX:+UseSerialGC
就是Young區和old區都使用serial 垃圾回收算法,
2. ParallelGC
參數-XX:+UseParallelGC
Young區:使用Parallel scavenge 回收算法
Old 區:可使用單線程的或者Parallel 垃圾回收算法,由 -XX:+UseParallelOldGC 來控制
3. CMS
參數-XX:+UseConcMarkSweepGC
Young區:可使用普通的或者parallel 垃圾回收算法,由參數 -XX:+UseParNewGC來控制
Old 區:只能使用Concurrent Mark Sweep
4. G1
參數:-XX:+UseG1GC
沒有young/old區

 

四.一些配置解釋

1.選項/默認值 說明
-XX:+UseG1GC 使用 G1 (Garbage First) 垃圾收集器
-XX:MaxGCPauseMillis=n 設置最大GC停頓時間(GC pause time)指標(target). 這是一個軟性指標(soft goal), JVM 會盡可能去達成這個目標.
-XX:InitiatingHeapOccupancyPercent=n 啓動併發GC週期時的堆內存佔用百分比. G1之類的垃圾收集器用它來觸發併發GC週期,基於整個堆的使用率,而不僅是某一代內存的使用比. 值爲 0 則表示"一直執行GC循環". 默認值爲 45.
-XX:NewRatio=n 新生代與老生代(new/old generation)的大小比例(Ratio). 默認值爲 2.
-XX:SurvivorRatio=n eden/survivor 空間大小的比例(Ratio). 默認值爲 8.
-XX:MaxTenuringThreshold=n 提高年老代的最大臨界值(tenuring threshold). 默認值爲 15.
-XX:ParallelGCThreads=n 設置垃圾收集器在並行階段使用的線程數,默認值隨JVM運行的平臺不一樣而不一樣.
-XX:ConcGCThreads=n 併發垃圾收集器使用的線程數量. 默認值隨JVM運行的平臺不一樣而不一樣.
-XX:G1ReservePercent=n 設置堆內存保留爲假天花板的總量,以下降提高失敗的可能性. 默認值是 10.
-XX:G1HeapRegionSize=n 使用G1時Java堆會被分爲大小統一的的區(region)。此參數能夠指定每一個heap區的大小. 默認值將根據 heap size 算出最優解. 最小值爲 1Mb, 最大值爲 32Mb.

 

2.JVM堆大小的默認最大和最小值(參考)

操做系統及JVM類型 初始堆的大小(Xms) 最大堆的大小(Xmx)
Linux/Solaris,32位客戶端 16MB 256MB
Linux/Solaris,32位服務器 64MB 取1GB和物理內存大小1/4兩者中的最小值
Linux/Solaris,64位服務器 取512MB和物理內存大小1/64兩者中的最小值 取32GB和物理內存大小1/4兩者中的最小值
MacOS,64位服務器型JVM 64MB 取1GB和物理內存大小1/4兩者中的最小值
32位Window系統,客戶端型JVM 16MB

256MB

64位Window系統,客戶端型JVM 64MB

1GB和物理內存大小1/4兩者中的最小值

 

3.通常性調優辦法

  -Xmx 和-Xms 通常設置爲同樣大小,這樣能稍微提升GC的運行效率,由於他/她再也不須要估算堆是否須要調整大小了

 

 

JVM參數配置報錯:

1.Conflicting collector combinations in option list; please refer to the release notes for the combina
報錯:使用多種GC致使GC衝突

 

參考資料:

  http://blog.csdn.net/mr__fang/article/details/47723767

  http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html

相關文章
相關標籤/搜索