Java虛擬機3:經常使用JVM命令參數

以後寫的東西就會用到虛擬機參數了,如今這裏匯個總本身平時用到的、看到的一些虛擬機參數。如今看不懂不要緊,反正以後都會用到的:性能優化

(1)-Xms20M佈局

表示設置JVM啓動內存的最小值爲20M,必須以M爲單位性能

(2)-Xmx20M優化

表示設置JVM啓動內存的最大值爲20M,必須以M爲單位。將-Xmx和-Xms設置爲同樣能夠避免JVM內存自動擴展。大的項目-Xmx和-Xms通常都要設置到10G、20G甚至還要高spa

(3)-verbose:gc對象

表示輸出虛擬機中GC的詳細狀況blog

(4)-Xss128kip

表示能夠設置虛擬機棧的大小爲128k內存

(5)-Xoss128k虛擬機

表示設置本地方法棧的大小爲128k。不過HotSpot並不區分虛擬機棧和本地方法棧,所以對於HotSpot來講這個參數是無效的

(6)-XX:PermSize=10M

表示JVM初始分配的永久代的容量,必須以M爲單位

(7)-XX:MaxPermSize=10M

表示JVM容許分配的永久代的最大容量,必須以M爲單位,大部分狀況下這個參數默認爲64M

(8)-Xnoclassgc

表示關閉JVM對類的垃圾回收

(9)-XX:+TraceClassLoading

表示查看類的加載信息

(10)-XX:+TraceClassUnLoading

表示查看類的卸載信息

(11)-XX:NewRatio=4

表示設置年輕代:老年代的大小比值爲1:4,這意味着年輕代佔整個堆的1/5

(12)-XX:SurvivorRatio=8

表示設置2個Survivor區:1個Eden區的大小比值爲2:8,這意味着Survivor區佔整個年輕代的1/5,這個參數默認爲8

(13)-Xmn20M

表示設置年輕代的大小爲20M

(14)-XX:+HeapDumpOnOutOfMemoryError

表示可讓虛擬機在出現內存溢出異常時Dump出當前的堆內存轉儲快照

(15)-XX:+UseG1GC

表示讓JVM使用G1垃圾收集器

(16)-XX:+PrintGCDetails

表示在控制檯上打印出GC具體細節

(17)-XX:+PrintGC

表示在控制檯上打印出GC信息

(18)-XX:PretenureSizeThreshold=3145728

表示對象大於3145728(3M)時直接進入老年代分配,這裏只能以字節做爲單位

(19)-XX:MaxTenuringThreshold=1

表示對象年齡大於1,自動進入老年代

(20)-XX:CompileThreshold=1000

表示一個方法被調用1000次以後,會被認爲是熱點代碼,並觸發即時編譯

(21)-XX:+PrintHeapAtGC

表示能夠看到每次GC先後堆內存佈局

(22)-XX:+PrintTLAB

表示能夠看到TLAB的使用狀況

(23)-XX:+UseSpining

開啓自旋鎖

(24)-XX:PreBlockSpin

更改自旋鎖的自旋次數,使用這個參數必須先開啓自旋鎖

 

怎麼用MyEclipse設置虛擬機參數

右鍵類-->Run as-->Run Configurations...

Java Application裏面選到本身的類,選擇Arguments,VM arguments空白部分就能夠設置虛擬機參數了。若是點擊了Run Configurations沒有出現本身的類的話也不要緊,雙擊一下Java Application就行了

 

後記

Java虛擬機參數有上百個,性能調優中很大一塊就是選擇這上百個參數中的某些重要參數進行設置,而且根據項目運行狀況對參數進行不斷調整以求達到一個性能最佳點。性能調優說有捷徑也有捷徑,百度搜一份別人推薦的JVM參數設置改改就行了,那至於具體好很差就說不上了,但起碼保證能用吧;性能調優說沒捷徑也沒捷徑,若是對JVM的性能有嚴苛的要求而且但願細化到每個小點,達到能達到的最佳值,那首先就必須對於Java虛擬機,對於每個虛擬機參數有着深入的理解才行。最近幾年興起了一個叫作性能調優師的職位,也證實了性能優化的重要性,反正從我的的角度看,性能調優絕對是一門學問,不是那麼簡單的,打好基礎纔是王道。

相關文章
相關標籤/搜索