堆内存参数:
-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可以在调试的时候添加这些参数的设置:
-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 :设置一次混合回收中,最后一个阶段执行几次混合回收,默认是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/...."
网友评论