部分本人使用过的JVM参数盘点
1.如何查看一个正在运行的程序,它的JVM,某个参数是否开启?具体指是多少?
jps:查看java的后台进程
jinfo:查看正在运行的java程序的各种信息
右击程序打开Terminal,使用jps -l 命令,找到进程(正在运行的程序)的进程号,再使用jinfo -flag PrintGCDetails +进程号 命令
2.标配参数
java -version :查看java虚拟机的版本。
java -help : 查看java命令的帮助文档。
java -showversion :查看java虚拟机的版本(简略内容)。
3.X参数
-Xint :解释执行;
-Xcomp:第一次使用就编译成本地代码。
-Xmixed :混合模式。
4.XX参数(重点)
4.1 Boolean类型:
4.1.1 一般形式:
-XX:+或者- 某个属性;
+:表示开启;
-:表示关闭;
4.1.2 例子:
1.是否打印GC收集细节:
-XX:-printGCDetails
-XX:+printGCDetails
2.是否使用串行垃圾回收器:
-XX:-UseSerialGC
-XX:+UseSerialGC
同理其他几种垃圾回收器也有相应的打开参数;
是否打开并行垃圾收集器:
-XX:-UseParNewGC
-XX:+UseParNewGC
是否使用(CMS)并发标记回收垃圾回收器:
-XX:-UseConcMarkSweepGC
-XX:+UseConcMarkSweepGC
是否使用G1垃圾回收器:
-XX:-UseG1GC
-XX:+UseG1GC
3.查看JVM参数的初始默认值
-XX:+PrintFlagsInitial
4.查看JVM参数的修改与更新:
-XX:+PrintFlagsFinal -version
“=”:表示该值等于初始化值,没有被用户手动修改过或者JVM运行期间修改过
“:=”:表示该值被用户手动修改过或者JVM运行期间修改过
5.主要用于查看当前程序JVM使用的垃圾回收器
-XX:+PrintCommandLineFlags
4.2 Key:value类型:
4.2.1 一般形式:-XX:key=value
4.2.2 例子:
1.查看程序元空间(MetaSpaceSize)的初始大小:
-XX:MetasoaceSize=128m
修改JVM的元空间大小:
2.查看对象多大年龄值会被移动到养老区:
-XX:MaxTenuringThreshold=15
3.两个独特的参数
4.-Xss:设置栈大小
查看栈大小步骤:
初始的默认值为0
修改栈大小:
5.-Xmn:设置新生代大小
6.-XX:MetaspaceSize:设置元空间大小
虽然元空间的大小只受物理内存大小的限制,但是元空间的初始值只有大概的21MB的大小,如果不进行修改,那么可能会发生OOM的异常
7.:-XX:SurvivorRatio
设置Eden区和S0/S1区的比值
8.-XX:NewRatio
设置老生代和新生代的比值
9.-XX:MaxTenuringThreshold
设置新生代垃圾晋升到老年代的最大年龄
默认最大年龄是15,如果修改最大值,新的最大年龄必须在0–15之间(因为底层是用4bit为来记录年龄的,所以最大不能超过15)
待补充重点:java.lang.OutOfMemorryError;
OOM: