美文网首页
00 JVM参数

00 JVM参数

作者: 格林哈 | 来源:发表于2020-10-27 11:45 被阅读0次

    1 基本参数

    1.1 内存调整

    • -Xms10m 初始化堆大小
    • -Xmx10m 堆的最大大小
    • -XX:NewRatio=N 老年代与新生代比例默认2,老年代:新生代 2:1
    新生代
    • -XX:NewSize=N 设置新生代初始大小。
    • -XX:MaxNewSize=N 设置新生代最大大小。
    • -Xmn10m 设置新生代的初始值最大值
    • -XX:SurvivorRatio 设置新生中 eden区 与 2 个survivor区比例。
      • 默认8 eden比例 = 8 / (8 + 2)
    元空间/永久代
    • -XX:MetaspaceSize=N 设置元空间初始大小
    • -XX:MaxMetaspaceSize=N 设置云空间最大大小
    • -XX:PermSize=N 设置永久代的大小
    • -XX:MaxPermSize 设置永久代的大小
    • -Xss1M 单个线程栈的大小
    直接内存
    • -XX:MaxDirectMemorySize
      • 默认与 -Xmx 相同。
    方法区
    • -verbose:class 跟踪类加载和卸载
    • -XX:+TraceClassLoading 跟踪类加载
    • -XX:+TraceClassUnloading 跟踪类卸载

    常量池

    • -XX:StringTableSize=99991
      • image.png

    1.2 日志信息

    • -verbose:gc 开启基本的GC日志功能
    • -Xloggc:<path > 将GC日志记录到某个文件
    • -XX:+PrintGC 开启GC的基本日志
    • -XX:+PrintGCDetails 开启GC的详细日志
    • -XX:+PrintGCTimeStamps 为GC日志中的每个条目打印相对时间戳
    • -XX:+PrintGCDateStamps 为GC日志中的每个条目打印日期时间戳 开销比上面命令大
    • -XX:+PrintTLAB 在垃圾收集日志中输出TLAB相关的概略信息

    1.3 内存管理

    • -XX:+HeapDumpOnOutOfMemoryError JVM抛出一个内存异常就自动生成一个堆转储
    • -XX:HeapDumpPath=<path > 设置自动堆转储保存的文件名路径
    • -XX:TLABSize=N 设置TLAB的大小
    • -XX:-ResizeTLAB 关闭TLAB的大小调整功能
    • -XX:+UseCompressedOops 为对象引用模拟35位长的指针,32G默认开启 压缩指针8默认开启
    • -XX:SoftRefLRUPolicyMSPerMB=N 控制使用多长时间后软引用对象可以被回收

    2 垃圾收集器相关

    2.1 垃圾收集器组合使用参数

    • -XX:+UseParallelOldGC Parallel Scavenge + Parallel Old组合
    • -XX:+UseConcMarkSweepGC ParNew+CMS+Serial Old 组合
    • -XX:+UseG1GC g1收集器

    2.2 垃圾收集器共用

    • -XX:-XX:ConcGCThreads=N 设置垃圾收集器使用的线程数
    • -XX:+UseAdaptiveSizePolicy JVM会依据设定的GC目标调整堆的大小

    2.3 cms

    • -XX:CMSInitiatingOccupancyFraction=68 CMS 会在老年代空间占用达到 68% 时启动并发收集周期
      • 默认68 可以适当降低这个值

    2.4 Parallel Scavenge

    • -XX:MaxGCPauseMillis=N 最长停顿时间 单位毫秒,堆的大小会依据该目标动态调整
    • -XX:GCTimeRatio=N 公式 1/(1+N),用于控制Throughput收集器在垃圾收集上花费时间比例,堆的大小会依据该目标动态调整

    相关文章

      网友评论

          本文标题:00 JVM参数

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