下文筆者講述java中JVM引數的簡介說明,如下所示:
JVM引數型別說明
常見的JVM引數型別如下:
1.標準的jvm引數 -version -help
2.X非標準引數, -Xms -Xmx
3.XX不穩定引數, -XX:+PrintGC 設定這些引數會引起JVM性能差異
可能導致JVM性能提升,也可導致JVM例外而停止服務
注意事項:
-X和-XX引數可能隨著JDK版本的變更而發生變化
在下一個版本中有些引數可以能會被廢棄掉,
有些引數的功能會發生改變
但JDK官方不會通知開發者這些變化,需要使用者注意
XX引數數值型別
1.布爾型別 ,
如-XX:+PrintGCDetails
其中+和-
+代表開啟功能
-代表關閉功能
2.KV 屬性設定
如-XX:NewSize=512M
設定年輕代空間大小為512M
常用引數
| 引數 | 功能 | 默認值 | 示例 | 備注 |
| -Xms | 初始堆大小 | 物理記憶體64分之一 | -Xms=512M | |
| -Xmx | 最大堆大小 | 物理記憶體4分之一 | -Xmx=512M | 筆者建議同-Xms設定同樣的值 |
| -Xmn | 新生代大小 | -Xmn=512M | 盡量設定小一點 | |
| -Xss | 指定執行緒堆疊大小 | -Xss=512M | webx下需要設定256K |
X其它引數-列印GC資訊到檔案
-Xloggc:/log/gc_%t_%p.log:將gc資訊列印到指定的檔案中,通過時間戳生成檔案名
XX引數
-XX:NewSize:設定年輕代最小空間大小 -XX:MaxNewSize:設定年輕代最大空間大小 -XX:PermSize:設定永久代最小空間大小 -XX:MaxPermSize:設定永久代最大空間大小 -XX:NewRatio:設定年輕代和老年代的比值,默認值-XX:NewRatio=2,表示年輕代與老年代比值為1:2,年輕代占整個堆大小的1/3 -XX:SurvivorRatio:設定年輕代中Eden區Survivor區的容量比值,默認值-XX:SurvivorRatio=8,表示Eden : Survivor0 : Survivor1 = 8 : 1 : 1 -XX:-OmitStackTraceInFastThrow:關閉(省略例外堆疊從而快速拋出),默認開啟,如果想將所有例外資訊都拋出,建議關閉, -XX:+HeapDumpOnOutOfMemoryError:表示當JVM發生OOM時,自動生成DUMP檔案, -XX:HeapDumpPath=/usr/local/dump:dump檔案路徑或者名稱,如果不指定檔案名,默認為:java_<pid>_<date>_<time>_heapDump.hprof
GC日志
在設定JVM引數的時候
可以設定GC列印日志引數
-XX:+PrintGCDetails
日志列簡介說明 GC:表示進行了一次Minor GC,即從年輕代空間(包括 Eden 和 Survivor 區域)回收記憶體 Allocation Failure:在年輕代中沒有足夠的空間能夠存盤新的資料 Full GC (Ergonomics):表示進行了一次Full GC,即清理整個堆空間(包含年輕代和老年代) PSYoungGen: 1024K->1024K(1488K):垃圾回收器是Paralle Scavenge,年輕代區GC前->GC后該區域已使用量,后面的1488表示該區域總量 ParOldGen: 4011K->4011K(4082K)老年代區,GC前->GC后該區域已使用量,后面的4082表示該區域總量 5032K->5032K(5899K):GC前 -> GC后Java堆的使用量,后面的5899表示Java堆總量 Metaspace: 3117K->3117K(1056768K):JDK8中取消了永久代,新增了一個叫元空間(Metaspace)的區域,對應的還是JVM規范中的方法區(主要存放一些class和元資料的資訊),該資料表示該區GC前后使用量 0.0118131 secs:暫停STW 時間,即GC的時間 Times: user=0.01 sys=0.01, real=0.01 secs:更為詳細的時間占比統計
轉自:http://www.java265.com/JavaCourse/202204/2648.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/455504.html
標籤:其他
