• 【JVM】调优笔记3-----JVM参数配置 JDK1.8


    一.关于JVM参数配置,有多种途径

    1.在tomcat中直接配置的

      打开tomcat的安装目录, 在bin下修改catalina.bat文件

    添加如下:

    set "JAVA_OPTS=-Xmx300m -Xms300m -Xmn100m -XX:SurvivorRatio=8"

    在这个位置:

    启动tomcat即可起作用。

    2.使用Myecplise,配置JVM参数

    双击Tomcat,打开在如下位置,配置:

    -Xmx300m
    -Xms300m
    -Xmn100m
    -XX:SurvivorRatio=8

    在如下位置即可。

     然后启动项目,即可起作用。

    二.标准配置

    -Xmx300m 
    -Xms300m
    -Xmn100m
    -XX:SurvivorRatio=8
    
    -XX:+UseG1GC
    -XX:MaxTenuringThreshold=14
    -XX:ParallelGCThreads=8
    -XX:ConcGCThreads=8


    -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+TraceClassLoading -XX:+PrintClassHistogram

    进行JVM的优化的这些参数

    解释如下:

    -Xmx300m                         最大堆大小
    -Xms300m                        初始堆大小
    -Xmn100m                         年轻代大小
    -XX:SurvivorRatio=8              Eden区与Survivor区的大小比值,设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10
    
    -XX:+UseG1GC                      使用 G1 (Garbage First) 垃圾收集器    
    -XX:MaxTenuringThreshold=14          提升年老代的最大临界值(tenuring threshold). 默认值为 15[每次GC,增加1岁,到15岁如果还要存活,放入Old区]
    -XX:ParallelGCThreads=8              设置垃圾收集器在并行阶段使用的线程数[一般设置为本机CPU线程数相等,即本机同时可以处理的个数,设置过大也没有用]
    -XX:ConcGCThreads=8                并发垃圾收集器使用的线程数量


    -XX:+DisableExplicitGC          禁止在启动期间显式调用System.gc()
    -XX:+HeapDumpOnOutOfMemoryError OOM时导出堆到文件 -XX:HeapDumpPath=d:/a.dump    导出OOM的路径 -XX:+PrintGCDetails      打印GC详细信息 -XX:+PrintGCTimeStamps     打印CG发生的时间戳 -XX:+PrintHeapAtGC       每一次GC前和GC后,都打印堆信息 -XX:+TraceClassLoading     监控类的加载 -XX:+PrintClassHistogram       按下Ctrl+Break后,打印类的信息

    三.我们把GC分成4种类型

    1. SerialGC
    参数-XX:+UseSerialGC
    就是Young区和old区都使用serial 垃圾回收算法,
    2. ParallelGC
    参数-XX:+UseParallelGC
    Young区:使用Parallel scavenge 回收算法
    Old 区:可以使用单线程的或者Parallel 垃圾回收算法,由 -XX:+UseParallelOldGC 来控制
    3. CMS
    参数-XX:+UseConcMarkSweepGC
    Young区:可以使用普通的或者parallel 垃圾回收算法,由参数 -XX:+UseParNewGC来控制
    Old 区:只能使用Concurrent Mark Sweep
    4. G1
    参数:-XX:+UseG1GC
    没有young/old区

    四.一些配置解释

    1.选项/默认值 说明
    -XX:+UseG1GC 使用 G1 (Garbage First) 垃圾收集器
    -XX:MaxGCPauseMillis=n 设置最大GC停顿时间(GC pause time)指标(target). 这是一个软性指标(soft goal), JVM 会尽量去达成这个目标.
    -XX:InitiatingHeapOccupancyPercent=n 启动并发GC周期时的堆内存占用百分比. G1之类的垃圾收集器用它来触发并发GC周期,基于整个堆的使用率,而不只是某一代内存的使用比. 值为 0 则表示"一直执行GC循环". 默认值为 45.
    -XX:NewRatio=n 新生代与老生代(new/old generation)的大小比例(Ratio). 默认值为 2.
    -XX:SurvivorRatio=n eden/survivor 空间大小的比例(Ratio). 默认值为 8.
    -XX:MaxTenuringThreshold=n 提升年老代的最大临界值(tenuring threshold). 默认值为 15.
    -XX:ParallelGCThreads=n 设置垃圾收集器在并行阶段使用的线程数,默认值随JVM运行的平台不同而不同.
    -XX:ConcGCThreads=n 并发垃圾收集器使用的线程数量. 默认值随JVM运行的平台不同而不同.
    -XX:G1ReservePercent=n 设置堆内存保留为假天花板的总量,以降低提升失败的可能性. 默认值是 10.
    -XX:G1HeapRegionSize=n 使用G1时Java堆会被分为大小统一的的区(region)。此参数可以指定每个heap区的大小. 默认值将根据 heap size 算出最优解. 最小值为 1Mb, 最大值为 32Mb.

    2.JVM堆大小的默认最大和最小值(参考)

    操作系统及JVM类型 初始堆的大小(Xms) 最大堆的大小(Xmx)
    Linux/Solaris,32位客户端 16MB 256MB
    Linux/Solaris,32位服务器 64MB 取1GB和物理内存大小1/4二者中的最小值
    Linux/Solaris,64位服务器 取512MB和物理内存大小1/64二者中的最小值 取32GB和物理内存大小1/4二者中的最小值
    MacOS,64位服务器型JVM 64MB 取1GB和物理内存大小1/4二者中的最小值
    32位Window系统,客户端型JVM 16MB

    256MB

    64位Window系统,客户端型JVM 64MB

    1GB和物理内存大小1/4二者中的最小值

    3.一般性调优办法

      -Xmx 和-Xms 一般设置为一样大小,这样能稍微提高GC的运行效率,因为他/她不再需要估算堆是否需要调整大小了

    JVM参数配置报错:

    1.Conflicting collector combinations in option list; please refer to the release notes for the combina
    报错:使用多种GC导致GC冲突

    参考资料:

      http://blog.csdn.net/mr__fang/article/details/47723767

      http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html

      

  • 相关阅读:
    js 词法作用域揭秘
    Python 操作 Redis 发布订阅
    Logistic Regression
    快速逆平方根
    牛顿法
    Ubuntu安装BCC
    树莓派4b安装Ubuntu20.04
    丢弃法
    SpringBoot整合Redis
    Linear Regression
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/7196580.html
Copyright © 2020-2023  润新知