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