zoukankan      html  css  js  c++  java
  • JVM参数

    常用参数

    -XX:+PrintGCDetails:打印gc日志详细信息
    -XX:+PrintGCTimeStamps:打印gc发生时相对jvm启动的时间戳,(后来加入了PrintGCDateStamps,打印gc发生的日期)
    -Xloggc:设置gc日志的生成位置
    -Xms4096M:堆容量初始值
    -Xmx4096M:堆容量最大值
    -Xmn1024M:新生代容量,所以老年代容量 = 堆容量 - 新生代容量 = 3072M
    -Xss256K:线程堆栈空间大小
    -XX:MaxDirectMemorySize:Direct Buffer Memory大小
    -XX:NewRatio 用来来指定新生代和整个堆的大小比例,或者直接用–XX:NewSize来指定所需的新生代空间
    -XX:SurvivorRatio Eden区与Survivor区的大小比值
    -XX:MaxTenuringThreshold 设置对象在新生代中最大的存活次数,最大值15,并行回收机制默认为15,CMS默认为4。每经过一次YGC,年龄加1,当survivor区的对象年龄达到TenuringThreshold时,
    表示该对象是长存活对象,就会直接晋升到老年代
    -XX:TargetSurvivorRatio 设定survivor区的目标使用率。默认50,即survivor区对象目标使用率为50%,最高90% -XX:PretenureSizeThreshold 对象超过多大是直接在老年代分配 -XX:+CMSParallelRemarkEnabled 降低标记停顿 -XX:MaxPermSize:设置持久代最大值 java8已经不存在了 物理内存的1/4 -XX:PermSize:设置持久代(perm gen)java8已经不存在了 初始值 物理内存的1/64

    GC串行回收器相关的参数

    -XX:+UseSerialGC:在新生代和老年代使用串行收集器
     
    -XX:SurvivorRatio:设置eden区大小和survivor区大小的比例
     
    -XX:PretenureSizeThreshold:设置大对象直接进入老年代的阈值。当对象的大小超过这个值时,将直接在老年代分配。
     
    -XX:MaxTenuringThreshold:设置对象进入老年代的年龄的最大值。每一次Minor GC后,对象年龄就加1。任何大于这个年龄的对象,一定会进入老年代。

    并行GC相关的参数

    -XX:+UseParallelGC:在新生代使用并行收集器
     
    -XX:+UseParallelOldGC:老年代使用并行回收收集器
     
    -XX:ParallelGCThreads:设置用于垃圾回收的线程数。通常情况下可以和CPU数量相等,但在CPU数量较多的情况下,设置相对较小的数值也是合理的。
     
    -XX:MaxGCPauseMillis:设置最大垃圾收集停顿时间。他的值是一个大于0的整数。收集器在工作时,会调整Java堆大小或者其他参数,尽可能把停顿时间控制在MaxGCPauseMillis以内。
     
    -XX:GCTimeRatio:设置吞吐量大小。它是0-100的整数。假设GCTimeRatio的值为n,那么系统将花费不超过1/(1+n)的时间用于垃圾收集。
     
    -XX:+UseAdaptiveSizePolicy:打开自适应GC策略。在这种模式下,新生代的大小、eden和survivor的比例、晋升老年代的对象年龄等参数会被自动调整,已达到在堆大小、吞吐量和停顿时间之间的平衡点。

    CMS相关的参数

    -XX:+UseConcMarkSweepGC:老年代使用的收集器,有时候并发失败会退化到串行收集器

    -XX:+UseParallelGC:新生代使用的收集器
    -XX:ParallelCMSThreads:设定CMS的线程数量 -XX:CMSInitiatingOccupancyFraction:设置CMS收集器在老年代空间被使用多少后触发,默认为68% -XX:+UseCMSCompactAtFullCollection:设置CMS收集器完成垃圾收集后是否要进行一次内存碎片的整理 -XX:CMSFullGCsBeforeCompaction:设定进行多少次CMS垃圾回收后,进行一次内存压缩 -XX:+CMSClassUnloadingEnabled:允许对类元数据区进行回收 -XX:CMSInitiatingPermOccupancyFraction:当永久区占用率达到这一百分比时,启动CMS回收(前提是-XX:+CMSClassUnloadingEnabled激活了) -XX:UseCMSInitiatingOccupancyOnlyn:表示只在到达阈值的时候才进行CMS回收 -XX:+CMSIncrementalMode:使用增量模式,比较适合单CPU。增量模式在JDK 8中标记为废弃,并将在JDK 9中彻底移除。

    G1回收期相关的参数

    -XX:+UseG1GC:使用G1回收器
     
    -XX:MaxGCPauseMillis:设置最大垃圾收集停顿时间
     
    -XX:GCPauseIntervalMillis:设置停顿间隔时间
    
    -XX:+DisableExplicitGC:禁用显式GC
     
    -XX:+ExplicitGCInvokesConcurrent:使用并发方式处理显式GC

    具体参考https://blog.csdn.net/megustas_jjc/article/details/105470675

    TLAB相关参数

    -XX:+UseTLAB:开启TLAB分配
     
    -XX:+PrintTLAB:打印TLAB相关分配信息
     
    -XX:TLABSize:设置TLAB大小
     
    -XX:+ResizeTLAB:自动调整TLAB大小

    设置参考

    JAVA_OPTS="$JAVA_OPTS -server 
    -Xmx512M 设置堆内存最大值
    -Xms512M 设置堆内存最小值
    -XX:MetaspaceSize=128M 元空间大小
    -XX:+UseParNewGC 新生代GC
    -XX:+UseConcMarkSweepGC 老年代GC
    -XX:-OmitStackTraceInFastThrow 省略异常栈信息从而快速抛出,即JVM默认开启了Fast Throw,配置此参数堆栈信息不会缺失
    -XX:CMSInitiatingOccupancyFraction=70默认为68,即当年老代的空间使用率达到68%时,会执行一次CMS回收
    -XX:MaxTenuringThreshold=10 控制新生代需要经历多少次GC晋升到老年代中的最大阈值,最大值15
    -XX:+UseCMSInitiatingOccupancyOnly只使用设定的回收阈值(上面指定的70%),如果不指定,JVM仅在第一次使用设定值,后续则自动调整
    -XX:+CMSClassUnloadingEnabled 支持CMS垃圾回收下的类卸载
    -XX:+CMSScavengeBeforeRemark CMS的GC停顿时间约80%都在最终标记阶段(Final Remark),
    若该阶段停顿时间过长,常见原因是新生代对老年代的无效引用,在上一阶段的并发可取消预清理阶段中,执行阈值时间内未完成循环,来不及触发 Young GC,清理这些无效引用。
    通过添加此参数,在执行最终操作之前先触发 Young GC,从而减少新生代对老年代的无效引用,降低最终标记阶段的停顿。
    但如果在上个阶段(并发可取消的预清理)已触发 Young GC,也会重复触发 Young GC。
    -XX:+ExplicitGCInvokesConcurrent 或 -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses只能配合CMS使用,用来改变System.gc()的默认行为用的,
    不同的是-XX:+DisableExplicitGC是禁止System.gc(),而这两个参数还是会触发GC的,只不过不是触发一个完全stop-the-world的full GC,而是一次并发GC周期
    可以参考https://blog.csdn.net/knowledgeaaa/article/details/40505591
    -XX:+ParallelRefProcEnabled 默认为 false,并行的处理 Reference 对象,如 WeakReference,除非在 GC log 里出现 Reference 处理时间较长的日志,否则效果不会很明显。
    -XX:+PrintGCDetails 打印每次GC的细节信息。默认不打印
    -XX:+PrintGCDateStamps 打印每个GC的日期时间戳,默认不打印
    -XX:+PrintGCApplicationStoppedTime 打印GC暂停的时间长度,默认不打印
    -XX:+UseCompressedOops 开启指针压缩
    -XX:+DoEscapeAnalysis 逃逸分析
    -XX:+HeapDumpOnOutOfMemoryError 当JVM发生OOM时,自动生成DUMP文件
    -XX:HeapDumpPath=/logs/heapdump.hprof DUMP文件路径
    -XX:ErrorFile=/logs/hs_err_pid%p.log 当不可恢复的错误发生时,错误信息记录到哪个文件 参考https://blog.csdn.net/weixin_39609541/article/details/113082717
    -Xloggc:/logs/gc.log 指定GC log的位置,以文件输出
    "
  • 相关阅读:
    java 冒泡排序算法
    题目: 2/1, 3/2, 5/3, 8/5, 13/8, 21 13 ...
    java-- 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
    java--输出一个菱形
    java --- 九九乘法表
    java--判断某一年是闰年还是平年
    去除inline-block元素间间距的N种方法
    IE8+兼容经验小结
    Javascript你必须要知道的面试题
    js几个经典的题目详解
  • 原文地址:https://www.cnblogs.com/sglx/p/15215455.html
Copyright © 2011-2022 走看看