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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM