整理了JVM一些常用的参数:

1、内存相关的参数

-XX:+/- UseTLAB:是否使用本地线程分配缓冲

-XX:+HeapDumpOnOutOfMemoryError内存对转储快照

-Xms 堆最小值

-Xmx 堆最大值(32位的windows限制每个进程的最大内存为2G)

-Xoss 本地方法栈大小

-Xss 栈容量

-Xmn 堆中年轻代的大小

-XX:PermSize 方法区大小 (HotSpot虚拟机中的永久代)

-XX:MaxPermSize 方法区最大值(在使用CGLib等字节码技术时,会使用这个参数)

-XX:MaxDirectMemorySize 本机直接内存(不设定默认预java堆最大值Xmx一样)

-XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值

-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值

2、GC相关参数

UseSerialGC  虚拟机运行在Client模式下的默认值,打开此开关后,使用serial+serial old的收集器组合。

UseParNewGC 打开后,使用ParNew+SerialOld的收集器组合

UseConcMarkSweepGC 打开后,使用ParNew+CMS+Serial old(备用)

UseParallelOldGC 虚拟机在server模式下的默认值,打开后使用 Paraller Scavenge + Serial Old

SurvivorRatio 新生代中Eden区域和Survivor区域的容量比值,默认8

PretenureSizeThreshold 直接晋升到老年代的对象大小,设置这个后,大于这个参数的对象直接分配在老年代

MaxTenuringThreshold 晋升到老年代的对象年年。每个对象在坚持过一个Minor GC之后,年龄就增加1,当超过这个参数值时就进入老年代

UseAdaptiveSizePolicy 动态调整java堆中各个区域的大小,以及进入老年代的年龄

HandlePromotionFailure 是否允许分配担保失败

ParallelGCThreads 设置兵线GC时进行内存回收的线程数

GCTimeRatio GC时间占总时间的比率,仅在使用Parallel Scavenge收集器时生效

MaxGCPauseMillis 设置GC的最大停顿时间。仅在使用parallel scavenge收集器时生效

CMSInitiatingOccupancyFraction 设置CMS收集器在老年代空间被使用多少后触发垃圾收集。默认值为68%,仅在使用CMS收集器时生效

UseCMSCompactAtFullCollection 设置CMS收集器在完成垃圾收集后是否要进行一次内存碎片整理。仅在使用CMS收集器时生效

CMDFullGCBeforeCompaction 设置CMS收集器在进行若干次垃圾收集后再启动一次内存碎片整理,仅在使用CMS时生效


其他一些参数


java -verbose:class  在程序运行的时候有多少类被加载


java –verbose:gc  在虚拟机发生内存回收时在输出设备显示信息

java –verbose:jni 输出native方法调用的相关情况,一般用于诊断jni调用错误信息

java -XX:+HeapDumpOnOutOfMemoryError