GC
- -XX:+PrintGC 打印GC日志
- -XX:+PrintGCDetails 打印详细的GC日志
- -Xloggc:/var/gc.log 将GC日志打印在根目录的var文件夹下的gc.log文件中
class
- -verbose:class 打印类加载和卸载信息
堆内存
- -Xmx2048m 最大堆内存
- -Xms2048m 最小堆内存
- -Xmn512m 新生代内存
- -XX:SurvivorRatio 值为eden/from=eden/to
- -XX:+HeapDumpOnOutOfMemoryError 在内存溢出时导出整个堆信息
- -XX:HeapDumpPath=/var/heap.dump 指定导出堆的存放路径
方法区
- -XX:PermSize=50m 方法区大小
- -XX:MaxPermSize=50m 方法区最大大小
Metaspace
- -XX:MaxMetaspaceSize 指定元空间的大小,默认情况下,只受限于系统内存大小
栈
- -Xss1m
直接内存
- -XX:MaxDirectMemorySize 最大可用直接内存,默认最大值为-Xmx,直接内存使用量达到该值时,触发垃圾回收
垃圾回收器
- -XX:UseSerialGC 使用serial/serial old垃圾回收器
- -XX:PrintGCApplicationStoppedTime:查看STW时间
- -XX:UseParNewGC 使用parNew/serial old
- -XX:ParallelGCThreads parNew的GC线程数
Parallel
- -XX:+UseParallelGC 使用Parallel Scavenge/serial Old //TODO
- -XX:+UseParallelOldGC 使用Parallel Scavenge/Parallel Old
- -XX:GCTimeRatio:直接设置吞吐量大小,假设设为19,则允许的最大GC时间占总时间的1/(1+19),默认值为99,即1/(1+99)
- -XX:MaxGCPauseMillis:最大GC停顿时间,该参数并非越小越好
- -XX:+UseAdaptiveSizePolicy:开启该参数,-Xmn/-XX:SurvivorRatio/-XX:PretenureSizeThreshold这些参数就不起作用了,虚拟机会自动收集监控信息,动态调整这些参数以提供最合适的的停顿时间或者最大的吞吐量(GC自适应调节策略),而我们需要设置的就是-Xmx,-XX:+UseParallelOldGC或-XX:GCTimeRatio两个参数就好(当然-Xms也指定上与-Xmx相同就好)
CMS
- -XX:+UseConcMarkSweepGC 使用parNew/CMS
- -XX:CMSInitiatingOccupancyFraction 指定当年老代空间满了多少后进行垃圾回收。默认68,即68%
- -XX:+UseCMSCompactAtFullCollection (默认是开启的)在CMS收集器顶不住要进行FullGC时开启内存碎片整理过程,该过程需要STW
- -XX:CMSFullGCsBeforeCompaction 指定多少次FullGC后才进行整理
- -XX:ParallelCMSThreads 指定CMS回收线程的数量,默认为:(CPU数量+3)/4
- -XX:+CMSPermGenSweepingEnabled与-XX:+CMSClassUnloadingEnabled 使用CMS进行方法区的回收
G1
- -XX:+UseG1GC 使用G1
对象进入年老代
- -XX:MaxTenuringThreshold=15 复制过15次后
- -XX:PretenureSizeThreshold=1000 大于1000字节的对象直接进入年老代
JIT
- -XX:CounterHalfLifeTime 半衰周期
- -XX:CompileThreshold 默认server模式是10000,即在半衰周期内方法调用次数达到10000次,将该方法编译为机器码
- -XX:-UseCounterDecay 关闭上述机制,即半衰周期的无穷大
- -XX:OnStackReplacePercent 用于计算循环体执行的次数,server模式下通过该值算出来的回边数是10700,即循环体执行10700次时便以为机器码