1. 程式人生 > >jvm配置(據說是阿里的)

jvm配置(據說是阿里的)

-XX:+CMSClassUnloadingEnabled
對永久代進行垃圾回收,Hotspot虛擬機器中,永久代即方法區


-XX:+UseParNewGC
新生代使用並行垃圾收集器


-XX:ParallelGCThreads=4
並行垃圾收集器的執行緒數,即同時多少個執行緒一起進行垃圾回收。最好配置與處理器核心數目相等。


-XX:+UseCMSInitiatingOccupancyOnly
該選項用來命令JVM不基於執行時收集的資料來啟動CMS垃圾收集週期。而是基於CMSInitiatingOccupancyFraction選項的值進行每一次CMS收集。


-XX:CMSInitiatingOccupancyFraction=80
當老年代使用率達到80%是,CMS觸發


-XX:CMSMaxAbortablePrecleanTime=5000
CMS在執行remark(也有叫做rescan)之前,執行的preclean階段的控制時間,即CMS在執行remark的時候預清理的時間


-XX:+ExplicitGCInvokesConcurrent
JVM無論什麼時候呼叫系統GC(即程式碼中呼叫system.gc(),該方法會默認出發一次full gc),都執行CMS GC,而不是Full GC。


-XX:+HeapDumpOnOutOfMemoryError
JVM發生OOM時,生成一個堆儲存快照檔案


-XX:HeapDumpPath=/home/admin/logs/java.hprof
OOM快照檔案的地址


-XX:InitialHeapSize=4294967296
初始化堆記憶體容量,單位Byte


-XX:MaxHeapSize=4294967296
最大堆記憶體容量,單位Byte


-XX:MaxDirectMemorySize=1073741824
直接記憶體的最大容量


-XX:MaxNewSize=2147483648
新生代容量


-XX:NewSize=2147483648
新生代容量


-XX:MaxPermSize=268435456
永久代容量


-XX:PermSize=268435456
永久代容量


-XX:OldPLABSize=16


-XX:+PrintGC                 列印GC日誌
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps


-XX:SurvivorRatio=10
Eden與Survivor的佔用比例,例如10表示,一個survivor區佔用 1/10 的Eden記憶體,即1/12的新生代記憶體,
新生代有2個survivor,即S0和S1。所以survivor總共是佔用新生代記憶體的 2/12,Eden與新生代的佔比則為 10/12


-XX:+UseCMSCompactAtFullCollection
CMS開啟碎片整理,CMS預設不會整理堆碎片,因此為了防止堆碎片引起full gc,可以開啟該選項


-XX:+UseCompressedOops
啟用指標壓縮,在64位HotSpot中使用32位指標,預設64位會比32位的記憶體使用多出1.5倍
啟用CompressOops後,會壓縮的物件:1、每個Class的屬性指標(靜態成員變數),2、每個物件的屬性指標,3、普通物件陣列的每個元素指標