2021-05-12 14:32:11
JVM jinfo命令(Java Configuration Info) 使用方法
簡介
jinfo是jdk自帶的命令,可以用來檢視正在執行的Java應用程式的擴充套件引數,甚至支援在執行時,修改部分引數。
通常會先使用jps檢視java進程的id,然後使用jinfo檢視指定pid的jvm資訊.
jps #通過jps來檢視當前執行狀態的虛擬機器進程檢視jvm的引數
jinfo -flags process_id
檢視java系統引數
jinfo -sysprops process_id
虛擬機器的這些引數可以通過下面的命令檢視:
java -XX:+PrintFlagsFinal -version | grep manageable
除了通過啟動指令碼可以設定引數,PrintGC預設是開啟的,因此我們只需要開啟PrintGCDetails引數。
jinfo -flag +PrintGC 27250
jinfo -flag +PrintGCDetails 27250
如果需要關閉GC紀錄檔的列印,使用下面的命令:
jinfo -flag -PrintGC 27250
jinfo -flag -PrintGCDetails 27250
檢視是否開啟了GC紀錄檔的列印:
jinfo -flag PrintGC 27250
jinfo -flag PrintGCDetails 27250
常用JVM引數
-Xms:初始堆大小,預設為實體記憶體的1/64(<1GB);預設(MinHeapFreeRatio引數可以調整)空餘堆記憶體小於40%時,JVM就會增大堆直到-Xmx的最大限制
-Xmx:最大堆大小,預設(MaxHeapFreeRatio引數可以調整)空餘堆記憶體大於70%時,JVM會減少堆直到 -Xms的最小限制
-Xmn:新生代的記憶體空間大小,注意:此處的大小是(eden+ 2 survivor space)。與jmap -heap中顯示的New gen是不同的。整個堆大小=新生代大小 + 老生代大小 + 永久代大小。在保證堆大小不變的情況下,增大新生代後,將會減小老生代大小。此值對系統效能影響較大,Sun官方推薦設定為整個堆的3/8。
-XX:SurvivorRatio:新生代中Eden區域與Survivor區域的容量比值,預設值為8。兩個Survivor區與一個Eden區的比值為2:8,一個Survivor區占整個年輕代的1/10。
-Xss:每個執行緒的堆疊大小。JDK5.0以後每個執行緒堆疊大小為1M,以前每個執行緒堆疊大小為256K。應根據應用的執行緒所需記憶體大小進行適當調整。在相同實體記憶體下,減小這個值能生成更多的執行緒。但是作業系統對一個進程內的執行緒數還是有限制的,不能無限生成,經驗值在3000~5000左右。一般小的應用, 如果棧不是很深, 應該是128k夠用的,大的應用建議使用256k。這個選項對效能影響比較大,需要嚴格的測試。和threadstacksize選項解釋很類似,官方文件似乎沒有解釋,在論壇中有這樣一句話:"-Xss is translated in a VM flag named ThreadStackSize”一般設定這個值就可以了。
-XX:PermSize:設定永久代(perm gen)初始值。預設值為實體記憶體的1/64。
-XX:MaxPermSize:設定持久代最大值。實體記憶體的1/4。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-12/149565.htm
相關文章