整理了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