jvm配置解釋

1.Parallel Scavenge 和 ParallelOld

-Xmx4g 

-Xms4g

-Xmn820m

-Xss256k

-XX:MaxPermSize=256m(1.8中已經棄用)

-XX:MetaspaceSize=256m

-XX:SurvivorRatio=8

-XX:+HeapDumpOnOutOfMemoryError 

-XX:HeapDumpPath:d:/a.dump

-XX:+UseParallelOldGC

-XX:MaxGCPauseMillis=200

-XX:ParallelGCThreads=邏輯處理器個數

-XX:+CMSClassUnloadingEnabled

-XX:+DisableExplicitGC


2.cms 和 parnew

-Xmx4g 

-Xms4g

-Xmn820m

-Xss256k

-XX:MaxPermSize=256m(1.8中已經棄用)

-XX:MetaspaceSize=256m

-XX:SurvivorRatio=8

-XX:+HeapDumpOnOutOfMemoryError 

-XX:HeapDumpPath=d:/a.dump

-XX:+UseConcMarkSweepGC

-XX:ParallelGCThreads=邏輯處理器個數

-XX:CMSInitiatingOccupancyFraction=75

-XX:+UseCMSCompactAtFullCollection(1.8中已經棄用)

-XX:CMSFullGCsBeforeCompaction=5(1.8中已經棄用)

-XX:+CMSClassUnloadingEnabled

-XX:+DisableExplicitGC


3.g1收集器

-XX:+UseG1GC

-Xmx4g

-Xms4g

-XX:MaxGCPauseMillis=250

-XX:InitiatingHeapOccupancyPercent=45

-XX:+PrintGCDetails

-XX:+PrintAdaptiveSizePolicy

-XX:G1HeapRegionSize=16m

-XX:+ParallelRefProcEnabled

-XX:ParallelGCThreads=邏輯處理器個數

-XX:ConcGCThreads=邏輯處理器個數的四分之一

-XX:G1MixedGCCountTarget=8






-XX:+PrintGCDetails  打印gc的比較信息,並在退出jvm的時候打印堆的詳細信息

-XX:+PrintGCTimeStamps 打印gc發生的時間

-XX:+PrintGCApplicationConcurrentTime 打印每次垃圾回收前,程序未中斷的執行時間。

-XX:+PrintGCApplicationStoppedTime 打印垃圾回收期間程序暫停的時間。

-Xloggc:filename:把gc信息記錄到文件以便分析。

-XX:+TraceClassLoading用來打印類被加載的過程信息

-XX:+TraceClassUnloading 用來打印類被卸載的過程信息

-XX:+PrintFlagsFinal 打印所有的jvm的參數以及對應的值

-XX:+PrintCommandLineFlags 打印用戶設置的jvm參數的值或者隱試傳遞給jvm的參數的值

-Xmx最大堆

-Xms最小堆,一般和最大堆設置一樣

-Xmn設置新生代大小,一般設置爲整個堆的四分之一,Sun官方推薦配置爲整個堆的3/8

-XX:SurvivorRatio  默認爲8,則兩個Survivor區與一個Eden區的比值爲2:8,一個Survivor區佔整個年輕代的1/10

-XX:NewRatio   -XX:NewRatio=4表示年輕代與年老代所佔比值爲1:4,年輕代佔整個堆棧的1/5
                       Xms=Xmx並且設置了Xmn的情況下,該參數不需要進行設置。

-XX:+HeapDumpOnOutOfMemoryError 發生堆內存溢出時,打印出堆的信息,可以使用MAT工具分析,通常和-XX:HeapDumpPath使用

-XX:HeapDumpPath:d:/a.dump 導出到某個地方

-XX:PermSize 和-XX:MaxPermSize一樣大小設置(1.8中已經棄用)

-XX:MaxPermSize 128m或者256m,看項目的大小(1.8中已經棄用)


-XX:MetaspaceSize,初始空間大小,達到該值就會觸發垃圾收集進行類型卸載,同時GC會對該值進行調整:如果釋放了大量的空間,就適當降低該值;如果釋放了很少的空間,那麼在不超過MaxMetaspaceSize時,適當提高該值。
  -XX:MaxMetaspaceSize,最大空間,默認是沒有限制的。

-Xss每個線程的堆棧大小,256k差不多了


-XX:ParallelGCThreads=n

設置 STW 工作線程數的值。將 n 的值設置爲邏輯處理器的數量。n 的值與邏輯處理器的數量相同,最多爲 8。

-XX:CMSInitiatingOccupancyFraction=75使用cms作爲垃圾回收使用75%後開始CMS收集

-XX:+UseCMSCompactAtFullCollection:使用併發收集器時,開啓對年老代的壓縮.(1.8中已經棄用)
-XX:CMSFullGCsBeforeCompaction=0:上面配置開啓的情況下,這裏設置多少次Full GC後,對年老代進行壓縮(1.8中已經棄用)

-XX:+CMSClassUnloadingEnabled允許對類的元數據進行回收

-XX:+DisableExplicitGC 關閉System.gc()



-XX:InitiatingHeapOccupancyPercent=45設置觸發標記週期的 Java 堆佔用率閾值。默認佔用率是整個 Java 堆的 45%。
-XX:+PrintAdaptiveSizePolicy 打印自適應收集的大小。
-XX:G1HeapRegionSize=16m 當使用G1收集器時,設置java堆被分割的大小。這個大小範圍在1M到32M之間。

-XX:+ParallelRefProcEnabled  這個選項可以用HotSpot VM的任何一種垃圾回收器上,他會是用多個的引用處理線程,而不是單個線程。這個選項不會啓用多線程運行方法的finalizer。他會使用很多線程去發現需要排隊通知的finalizable對象。

-XX:G1MixedGCCountTarget=8 設置標記週期完成後,對存活數據上限爲 G1MixedGCLIveThresholdPercent 的舊區域執行混合垃圾回收的目標次數。默認值是 8 次混合垃圾回收。混合回收的目標是要控制在此目標次數以內。Java HotSpot VM build 23 中沒有此設置

-XX:ConcGCThreads=n 設置並行標記的線程數。將 n 設置爲並行垃圾回收線程數 (ParallelGCThreads) 的 1/4 左右。


http://itindex.net/detail/47030-cms-gc-%E9%97%AE%E9%A2%98

http://www.jianshu.com/p/92a5fbb33764

https://www.zhihu.com/question/57722838

http://blog.csdn.net/b_11111/article/details/52725494
http://www.cnblogs.com/zhguang/p/Java-JVM-GC.html

http://www.hollischuang.com/archives/110

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章