Linux環境查看JVM相關參數命令
相對不穩定
主要用於JVM調優和Debug
XX參數分類:
1、Boolean類型
格式: -XX:[+-]<name> 表示啟用或者禁用name屬性
比如: -XX:+UseConcMarkSweepGC
-XX:UseG1GC
2、非Boolean類型
格式: -XX:<name>=<value> 表示name屬性的值是value
比如:-XX:MaxGCPauseMillis=500
XX:GCTimeRatio=19
3、 -Xmx -Xms
不是X參數,而是XX參數
-Xms等價於-XX:InitialHeapSize
-Xmx等價於-XX:MaxHeapSize
3 JVM參數查看
3.1 查看JVM運行時參數
-XX:+PrintFlagsInitial
-XX:+PrintFlagsFinal
-XX:+UnlockExperimentalVMOptions //解鎖實驗參數
-XX:+UnlockDiagnosticVMOptions //解鎖診斷參數
-XX:+PrintCommandLineFlags //打印命令行參數
-XX:+UseSerialGC,虛擬機運行在Client模式下的默認值,Serial+Serial Old。
-XX:+UseParallelGC,虛擬機運行在Server模式下的默認值,Parallel Scavenge+Serial Old(PS Mark Sweep)。
-XX:+UseParNewGC,ParNew+Serial Old,在JDK1.8被廢棄,在JDK1.7還可以使用。
-XX:+UseParallelOldGC,Parallel Scavenge+Parallel Old。
-XX:+UseConcMarkSweepGC,ParNew+CMS+Serial Old。
-XX:+UseG1GC,G1+G1,只支持JDK1.7 14update以上
java -XX:+PrintCommandLineFlags -version //查看jvm默認的垃圾回收器
3.2 參數使用
java -XX:+PrintFlagsInitial -version > PrintFlagsInitial.txt //這個命令的值很多,保存到文件中
java -XX:+PrintFlagsFinal -version > PrintFlagsFinal.txt
3.3 jps 查看java進程
jps //查看java進程
jps -l //顯示完整的類名
3.4 查看正在運行的JVM參數
jinfo -flags pid //查看設置過值的參數
jinfo -flag InitialHeapSize pid //查看初始堆內存
jinfo -flag MaxHeapSize pid //查看最大堆內存
jinfo -flag PermSize pid //查看初始分配的非堆內存
jinfo -flag MaxPermSize pid //查看最大允許分配的非堆內存
jinfo -flag NewSize pid //查看年輕代初始內存
jinfo -flag MaxNewSize pid //查看年輕代最大內存
jinfo -flag NewRatio pid //查看年輕代與年老代的比值
jinfo -flag SurvivorRatio pid //查看年輕代中Eden區與Survivor區的比值
jinfo -flag MaxTenuringThreshold pid //查看對象如果在Survivor區移動了N次還沒有被垃圾回收就進入年老代
jinfo -flag UseSerialGC pid //查看串行收集器
jinfo -flag UseParallelGC pid //查看並行收集器
jinfo -flag UseParNewGC pid //查看並行收集器
jinfo -flag UseParallelOldGC pid //查看並行收集器
jinfo -flag UseConcMarkSweepGC pid //查看CMS回收器
jinfo -flag UseG1GC pid //查看G1回收器
jinfo -flag PrintGCDetails pid //查看是否打印GC日志
查看JVM內存配置
jmap -heap pid > 1.txt //參數較多,保存到文件
4 JVM常用工具
4.1 jps
jps //查看java進程
jps -l //顯示完整的類名
4.2 jinfo
jinfo -flag InitialHeapSize pid //查看初始堆內存
jinfo -flag MaxHeapSize pid //查看最大堆內存
jinfo -flag PermSize pid //查看初始分配的非堆內存
jinfo -flag MaxPermSize pid //查看最大允許分配的非堆內存
jinfo -flags pid //查看設置過值的參數
jinfo -flag UseConcMarkSweepGC pid //查看垃圾回收器
jinfo -flag UseG1GC pid //查看垃圾回收器
jinfo -flag UseParallelGC pid //查看垃圾回收器
4.3 jmap
jmap -heap pid > 1.txt
5 Tomcat調優
5.1 Linux下修改TomcatJVM內存大小
要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false前。
# OS specific support. $var _must_ be set to either true or false.
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
cygwin=false
5.2 windows下修改Tomcat JVM內存大小
5.2.1 解壓版本的Tomcat , 要通過startup.bat啟動tomcat才能加載配置
要添加在tomcat 的bin 下catalina.bat 里
rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd%后面添加
set JAVA_OPTS=-Xms1024m -Xmx1024m -Xmn=256m -XX:PermSize=128M -XX:MaxPermSize=128m -Djava.awt.headless=true -XX:+UseSerialGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:D:\log\jvm\gc.log
設置參數
-server -Xmx64m -Xms16m -Xmn32m -XX:MetaspaceSize=32m -Xss256k