美文网首页
JVM关键参数

JVM关键参数

作者: Franck_ | 来源:发表于2020-10-30 22:20 被阅读0次

    内存参数:
    -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/...."

    相关文章

      网友评论

          本文标题:JVM关键参数

          本文链接:https://www.haomeiwen.com/subject/evzqvktx.html