jvm參數及分析工具

-Xmx4G 設置堆的最大內存大小爲4GB,也可經過-XX:MaxHeapSize=4GB進行設置
-Xms256m 設置堆的初始內存大小爲256兆,若是未設置此選項,則初始大小將設置爲新生代和年老代分配的內存大小總和,也可經過-XX:InitialHeapSize=256m進行設置
-Xmn256m 設置新生代的初始內存大小和最大內存大小爲256兆,也可經過-XX:NewSize=256m設置新生代初始內存大小、-XX:MaxNewSize=256m設置新生代最大內存大小
-Xss256k 設置每一個線程的堆棧大小爲256KB,也可經過-XX:ThreadStackSize=256k進行設置。默認值與運行環境有關,64位linux系統中默認值爲1024KB
-XX:MetaspaceSize=256m

Metaspace因爲使用不斷擴容到-XX:MetaspaceSize參數指定的量,就會發生FGC;且以後每次Metaspace擴容都會發生FGC。
html

Metaspace的初始容量必定是21807104(約20.8m)和MetaspaceSize及MaxMetaspaceSize設置的值無關,因此擴容區間是[20.8m, MaxMetaspaceSize)java

-XX:MaxMetaspaceSize=256m 設置元空間的最大本機內存爲256兆
-XX:NewRatio=1 設置年老代和新生代佔用的內存空間的比值,即old/new=1,默認值是2
-XX:NewSize=256m 設置新生代的初始內存大小爲256兆
-XX:SurvivorRatio=4 設置Eden區和Survivor大小比值,即Eden/Survivor=4,該設置代表每一個Survivor區在新生代中佔1/6的空間,該設置默認值爲8

-XX:PretenureSizeThreshold=linux

10240000併發

設置直接進入老年代的對象大小閾值。此處表示大於10M的對象直接進入老年代
-XX:MaxTenuringThreshold=20 設置進入老年代的門檻,即對象在Survivor區之間拷貝了20次則將該對象複製到老年代
-XX:MaxNewSize=256m 設置新生代的最大內存大小爲256兆
-XX:InitialHeapSize=256m 設置堆的初始內存大小爲256兆
-XX:MaxHeapSize=4GB 設置堆的最大內存大小爲4GB
-XX:PermSize=256m 設置分配給永久代的空間(以字節爲單位),若是超出則會觸發垃圾回收。此選項在JDK 8中已棄用,並被該-XX:MetaspaceSize選項取代(緣由是jdk1.8已經將永久代移到了本地內存中,稱爲MetaSpace)
-XX:MaxPermSize=256m 設置最大永久生成空間大小(以字節爲單位)。此選項在JDK 8中已棄用,並由該-XX:MaxMetaspaceSize選項取代。
-XX:MaxGCPauseMillis=500 設置一次GC過程大的暫停時間,單位是毫秒
-XX:GCTimeRatio=9 設置吞吐量爲90%,計算公式N/(N+1),默認值爲99
-XX:+UseSerialGC 使用串行垃圾收集器,默認狀況下,禁用此選項,並根據計算機的配置和JVM的類型自動選擇收集器
-XX:+UseParallelGC 開啓並行垃圾收集器(也稱爲吞吐量收集器),對新生代開啓此選項將自動開啓-XX:+UseParallelOldGC,除非顯示禁用它
-XX:+UseParNewGC 對新生代使用並行線程進行垃圾回收,設置-XX:+UseConcMarkSweepGC選項時會自動啓用該選項,jdk1.8以後單獨使用該配置已過期,必須配合-XX:+UseConcMarkSweepGC使用
-XX:+UseParallelOldGC 對老年代使用並行垃圾收集器,開啓此選項時-XX:+UseParallelGC會自動被開啓
-XX:+UseConcMarkSweepGC 開啓併發標記清除垃圾收集器(僅對老年代有效),並自動開啓-XX:+UseParNewGC且沒法禁用
-XX:ParallelGCThreads=2 設置新生代和老年代中並行垃圾收集器開啓的線程數,默認值是系統可用CPU的數量
-XX:+PrintGC 容許打印GC信息
-XX:+PrintGCDetails 容許打印GX詳細信息
-XX:+PrintGCDateStamps 容許打印GC日期戳
-XX:+PrintGCTimeStamps 容許打印GC時間戳
-Xloggc:filename gc日誌輸出到指定文件

 

以上參數意義可參照官方文檔,https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.htmloracle

oracle官方文檔表示,在如下配置的計算機上,默認狀況下選擇吞吐量垃圾收集器;初始堆大小爲1/64的物理內存,最大爲1GB;最大堆大小爲1/4物理內存,最大爲1GB:
①.2個以上處理器
②.2GB以上的物理內存jvm

分析工具工具

jmap -heap pid
查看指定java進程的jvm參數和當前堆內各個區的內存使用狀況(pid表示進程id)
jstack pid
查看指定java進程的棧內日誌,主要用於分析線程的運行情況
jstat -gc pid 1000
每隔一秒統計一次gc的回收狀況spa

相關文章
相關標籤/搜索