内存


堆内存参数:

-Xms : 堆内存大小
-Xmx : 堆内存最大大小
-Xmn : 堆内存新生代大小, 扣除新生代大小后,其余的就是老年代大小

永久代(方法区)参数:

-XX:PermSize :永久代大小
-XX:MaxPermSize :永久代最大大小
JDK1.8以后的版本永久代用改为了以下两个参数:
-XX:MetaspaceSize 和 -XX:MaxMetaspaceSize
-XX:SurvivorRatio : Eden区的大小比例,默认是8 ,即Eden和s0:s1的比是8:1:1,s0和s1的比永远是1:1 , 所以当这个值设置成5的话,那么就是5:1:1 , 新生代内存会分为7份,Eden占5份,s0和s1分别占1份。设置需要用”=”。

线程:

-Xss : 每个线程的栈内存大小

IDE可以在调试的时候添加这些参数的设置:

  1. -Xms512M -Xmx512M

这个设置的意思是:堆内存和堆内存最大大小都是设置成512M

设置永久代参数的时候需要用”=”:

-XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M

这个设置的意思是设置永久代的大小和永久代的最大大小都是512M

新生代对象进入老年代的设置:
-XX:MaxTenuringThreshold : 设置新生代对象经历多少次MinorGC后进入老年代,默认=15
-XX:PretenureSizeThreshold : 单位字节,设置大于这个大小的对象直接进入老年代。

垃圾回收


-XX:+UseParNewGC
指定新生代垃圾回收,使用ParNew垃圾回收器。

-XX:ParallelGCThreads
设定ParNew垃圾回收器的线程,一般不用设置,默认是和服务器的核心数量一致。

-XX:CMSInitiatingOccupancyFaction
设置老年代占用多少比例的时候出发CMS垃圾回收。JDK1.6里面默认的值是92%。

-XX:+UseCMSCompactAtFullCollection :默认是打开的,意思是进行FullGC后,会停止所有工作线程,进行内存的整理。

-XX:CMSFullGCsBeforeCompaction
设置执行多少次FullGC之后在执行一次整理内存碎片的工作,默认是0。意思是执行FullGC后,立刻执行碎片整理。

-XX:+DisableExplicitGC
禁止显式执行GC,不允许用代码触发GC。

G1垃圾回收器

-XX:+UseG1GC : 指定使用G1回收器。

-XX:G1HeapRegionSize : 指定G1回收器的Region大小,一般不用设置,默认是 堆大小 / 2048 。

-XX:G1NewSizePercent : 设置G1回收器新生代初始比例,一般默认即可。

-XX:G1MaxNewSizePercent : 设置新生代最多占堆内存的比例,默认是60%。

-XX:MaxGCPauseMills : 设定G1执行GC的时候最多可以让系统停顿多长时间,默认是200ms。

-XX:G1MixedGCCountTarget
GC设置一次混合回收中,最后一个阶段执行几次混合回收,默认是8次。

-XX:InitiatingHeapOccupancyPercent
默认45%。设置混合回收的内存占比。意思是老年代占堆内存的45%Region的时候,会触发新生代+老年代一起回收的混合回收。

-XX:G1HeapWastePercent
默认5%。设置混合回收的结束占比。意思在回收过程中,空闲的Region占堆内存的5%,就会停止混合回收。

-XX:G1MixedGCLiveThresholdPercent
默认85%,意思是Region存活对象占比小于85%的Region才可以进行回收。

-XX:+CMSParallelInitialMarkEnabled
启用CMS回收器在“初始标记”阶段也使用多线程并发进行。

-XX:+CMSScavengeBeforeRemark
启用在CMS进行重新标记极端之前,先尽量执行一次YGC。

GC日志


-XX:+PrintGCDetils :打印详细的GC日志
-XX:+PrintGCTimeStamps :打印每次GC发生的时间
-Xloggc:gc.log :设置GC日志写入一个磁盘文件,当前是写入gc.log文件.


-XX:TraceClassLoading : 打印类加载的日志
-XX:TraceClassUnloadig : 打印类卸载的日志

内存快照


-XX:+HeapDumpOnOutOfMemoryError :启动发生OOM的时候,自动导出内存快照
-XX:HeapDumpPath :指定导出的内存快照的位置. “=/usr/….”