精华内容
下载资源
问答
  • JVM参数配置

    2020-12-15 14:23:49
    JVM参数配置 文章目录JVM参数配置 # -Xms初始值 -Xmx最大值 -Xmn最小值 参数后加'm'说明是MB,否则是KB JAVA_OPTS="-Xms1024m -Xmx6144m -Xmn1024m" # 当发生内存溢出时,保存当前堆到一个文件中,方便日后排查 也...

    JVM参数配置

    文章目录

    # -Xms初始值 -Xmx最大值 -Xmn最小值 参数后加'm'说明是MB,否则是KB
    JAVA_OPTS="-Xms1024m -Xmx6144m -Xmn1024m"
    # 当发生内存溢出时,保存当前堆到一个文件中,方便日后排查 也可以通过 -XX:HeapDumpPath=/tmp/heapdump.hprof 来显示指定路径
    JAVA_OPTS="${JAVA_OPTS} -XX:+HeapDumpOnOutOfMemoryError"
    # 打印GC发生的详细信息
    JAVA_OPTS="${JAVA_OPTS} -XX:+PrintGCDetails"
    # 打印GC发生的时间信息
    JAVA_OPTS="${JAVA_OPTS} -XX:+PrintGCTimeStamps"
    # 每次一次GC后,都打印堆信息
    JAVA_OPTS="${JAVA_OPTS} -XX:+PrintHeapAtGC"
    # 打印垃圾回收期间程序暂停的时间
    JAVA_OPTS="${JAVA_OPTS} -XX:+PrintGCApplicationStoppedTime"
    # 打印年轻代各个引用的数量以及时长
    JAVA_OPTS="${JAVA_OPTS} -XX:+PrintReferenceGC"
    PrintReferenceGC
    # 设置GC日志打印路径
    JAVA_OPTS="${JAVA_OPTS} -Xloggc:/home/weblogic/app/gc.log"
    
    # 设置软引用回收时间
    JAVA_OPTS="${JAVA_OPTS} -XX:SoftRefLRUPolicyMSPerMB=50"
    # 开启飞行器
    JAVA_OPTS="${JAVA_OPTS} -XX:+UnlockCommercialFeatures -XX:+FlightRecorder"
    # 启用G1 GC收集器
    JAVA_OPTS="${JAVA_OPTS} -XX:+UseG1GC"
    
    # 开启jmx远程监视
    CATALINA_OPTS="$CATALINA_OPTS
    -Dcom.sun.management.jmxremote
    -Djava.rmi.server.hostname=10.0.19.190
    -Dcom.sun.management.jmxremote.port=9636
    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false"
    
    # GC打印参数
    -XX:+PrintGC 输出简要GC日志 
    -XX:+PrintGCDetails 输出详细GC日志 
    -Xloggc:gc.log  输出GC日志到文件
    -XX:+PrintGCTimeStamps 输出GC的时间戳(以JVM启动到当期的总时长的时间戳形式) 
    -XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800) 
    -XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
    -verbose:gc
    -XX:+PrintReferenceGC 打印年轻代各个引用的数量以及时长
    
    展开全文
  • jvm参数配置

    千次阅读 2018-02-06 16:28:04
    关于JVM参数配置,有多种途径。 1.在tomcat中直接配置的  打开tomcat的安装目录, 在bin下修改catalina.bat文件 添加如下: set "JAVA_OPTS=-Xmx300m -Xms300m -Xmn100m -XX:SurvivorRatio=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冲突


    展开全文
  • JVM 参数配置

    2019-07-22 17:30:09
    常见参数配置 -XX:+PrintGc 每次触发GC的时候打印相关日志 -XX:+UseSerialGC 串行回收 -XX:+PrintGCDetails 更详细的GC日志 -Xms 堆初始值 -Xmx 堆最大可用值 -Xmn 新生代堆最大可用值 -XX:SurvivorRatio 用来设置...

    JVM提供了诸多的参数进行JVM各个方面内存大小的设置,为Java应用进行优化提供了诸多的工具。

    常见参数配置

    • -XX:+PrintGc 每次触发GC的时候打印相关日志
    • -XX:+UseSerialGC 串行回收
    • -XX:+PrintGCDetails 更详细的GC日志
    • -Xms 堆初始值
    • -Xmx 堆最大可用值
    • -Xmn 新生代堆最大可用值
    • -XX:SurvivorRatio 用来设置新生代中 eden 空间和 from/to 空间的比例
    • -XX:NewRation 配置新生代与老年代占比
    • -XX:SurvivorRatio=eden/from=eden/to
    总结

    在实际工作中,我们可以直接将初始的堆大小与最大堆大小相等,这样的好处是可以减少程序运行时垃圾回收次数,从而提高效率。

    JVM 参数调优主要是围绕对内存

    堆内存大小配置

    使用示例

    -Xmx20m -Xms5m

    说明

    当下Java应用最大可用内存为20M, 初始内存为5M

    设置新生代比例参数

    使用示例

    -Xms20m -Xmx20m -Xmn1m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC

    说明

    堆内存初始化值20m,堆内存最大值20m,新生代最大值可用1m,eden空间和from/to空间的比例为2/1

    设置新生代和老年代的比例参数

    使用示例

    -Xms20m -Xmx20m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC -XX:NewRatio=2

    说明

    堆内存初始化值20m,堆内存最大值20m,新生代最大值可用1m,eden空间和from/to空间的比例为2/1,新生代和老年代的占比为1/2

    展开全文
  • Jvm 参数配置

    2017-05-10 13:41:57
    -XX:PermSize=512m -XX:MaxPermSize=512m -Xms512m -Xmx1536m -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError -Xloggc:/opt/
    -XX:PermSize=512m -XX:MaxPermSize=512m -Xms512m -Xmx1536m -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError -Xloggc:/opt/jboss/domain/servers/server1/log/verbose.gc -XX:HeapDumpPath=/opt/jboss/domain/servers/server1/log/ -Dfile.encoding=UTF-8 -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Djboss.home.dir=/opt/jboss 

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,162
精华内容 2,464
关键字:

jvm参数配置