• jvm参数配置


    一.关于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

    在如下位置即可。

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

    二.标准配置:

    [这里是图片003]

    -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

    [这里是图片004]

    进行JVM的优化的这些参数

    解释如下:

    [这里是图片005]

    -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后,打印类的信息

    [这里是图片006]

    三.我们把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冲突

  • 相关阅读:
    python下载安装教程
    【从零开始的Java开发】2-9-3 油画商城静态网页案例
    游戏 csp 201712-2
    Qt文件系统源码分析—第二篇QSaveFile
    MyBioSource鸭核糖核酸酶 A ELISA 试剂盒解决方案
    MySQ 内存使用率高
    django建站过程(2)创建第一个应用程序页面
    linux-免费ssl证书
    Netty 学习之 Socket
    最新全流程GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟教程
  • 原文地址:https://blog.csdn.net/web13618542420/article/details/126411543