`

JVM 配置 以及垃圾收集器的选择

    博客分类:
  • java
 
阅读更多
JVM监控的关键指标说明:
a) FGC的环比增加次数。Zabbix每2分钟监控一次,如果2分钟之内,FGC增加的次数高于预定阈值,就报警。
b) JVM内存使用量。当该值大于阈值的时候,就报警。
以上两个值能说明JVM运行的健康情况:如果FGC和JVM内存使用量过多,说明应用内存可能不足(容量不足),就需要扩容或者优化代码。
c) 其他参数:ygc的次数,old、perm的使用大小都需要监控起来。

具体技术方案说明:
推荐的JVM参数模板:
-server -XX:+UseCompressedOops -Xms2048m -Xmx2048m -XX:MaxPermSize=256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+ScavengeBeforeFullGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=9 -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:-ReduceInitialCardMarks -XX:+CMSPermGenSweepingEnabled -XX:CMSInitiatingPermOccupancyFraction=70 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime -XX:+PrintHeapAtGC -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Xloggc:/wls/applogs/jvm/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/wls/applogs/jvm/HeapDumpOnOutOfMemoryError.log -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Xbootclasspath/p:$JBOSS_HOME/modules/org/jboss/logmanager/main/jboss-logmanager-1.2.2.GA.jar:/wls/jboss/jboss-as-7.1.1.Final/modules/org/jboss/logmanager/log4j/main/jboss-logmanager-log4j-1.0.0.GA.jar:/wls/jboss/jboss-as-7.1.1.Final/modules/org/apache/log4j/main/log4j-1.2.16.jar -Dlogging.configuration=$JBOSS_HOME/standalone/configuration/logging.properties -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Dorg.jboss.logging.Logger.pluginClass=org.jboss.logging.logmanager.LoggerPluginImpl -Dcom.sun.management.snmp.port=9998 -Dcom.sun.management.snmp.interface=localhost -Dcom.sun.management.snmp.acl=false

参数优化理由:

理由 参数
压缩对象,以节省内存 UseCompressedOops
Jvm初始化时,就限制最小和最大的内容一致,避免JVM内存大小调整的时候消耗CPU和耗时。同时为了标准化,限制jvm(最大及最小)内存为2048,虚拟机的内存为4g。并只控制持久带的大小(推荐位jvm大小的1/8),不控制新生代和老年代的大小。 -Xms2048m -Xmx2048m -XX:MaxPermSize=256m
使用新的并行、CMS回收机制,两者可兼容。选用cms的理由是,使得应用在回收时,最少的停顿。并配合cms配置参数 -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+ScavengeBeforeFullGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=9 -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:-ReduceInitialCardMarks -XX:+CMSPermGenSweepingEnabled -XX:CMSInitiatingPermOccupancyFraction=70

为了支持jvm的snmp监控,结合jboss容器,需要添加相关的logmanager的参数,否则会报错,并设置读取snmp的数据,只能在本机获取。 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime -XX:+PrintHeapAtGC -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Xloggc:/wls/applogs/jvm/gc.log -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/wls/applogs/jvm/HeapDumpOnOutOfMemoryError.log -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000
其他:设置编码UTF8,gc日志打印完整的日期,详情;oom时,打印日志等。 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime -XX:+PrintHeapAtGC -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Xloggc:/wls/applogs/jvm/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/wls/applogs/jvm/HeapDumpOnOutOfMemoryError.log -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000
运行过程中,保持观察,可做微调。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    直通BAT必考题系列:7种JVM垃圾收集器特点,优劣势、及使用场景

    垃圾收集器的选择和配置对应用程序的性能有着显著影响,特别是在处理大规模数据和高并发的场景下。了解各种垃圾收集器的特点、优势、劣势以及使用场景对于优化Java应用至关重要,特别是对于准备BAT(百度、阿里巴巴...

    JVM内存模型以及垃圾收集策略解析

    在Java中,如果一个对象无法通过根(如静态变量或栈上的对象引用)或另一个可达对象访问,那么它被认为是不可达的,可以被垃圾收集器回收。 垃圾收集策略包括多种,如标记-清除、复制、标记-压缩和分代收集等。这些...

    JvmGC收集器

    在 Java 虚拟机中,GC(Garbage Collection)收集器是 JVM 的一个重要组件,它负责回收 Java 应用程序中的垃圾对象,从而维持应用程序的性能和可靠性。JvmGC 收集器是 JVM 中的三个主要 GC 收集器之一,分别是 ...

    Java垃圾收集器推荐.pdf

    开发者应深入理解垃圾收集器的工作原理和特点,并结合应用需求和运行环境合理选择和配置垃圾收集策略。通过细致的性能调优,可以最大限度地减少垃圾收集对应用性能的影响,实现高效、平稳的运行体验。

    JVM初探内存分配GC原理与垃圾收集器共16页.pdf.z

    Java虚拟机(JVM)是Java程序运行的基础,它为Java应用程序提供了运行环境。...总的来说,理解JVM内存分配和GC原理,以及如何选择和配置垃圾收集器,对于提升Java应用的性能和稳定性有着至关重要的作用。

    JVM垃圾回收机制

    在Java编程中,JVM(Java虚拟机)的垃圾回收机制是自动管理内存的重要部分。垃圾回收机制负责回收那些不再被程序使用、即...开发者需要根据应用特点和运行环境选择合适的垃圾收集器和配置参数,以达到最优的性能表现。

    JVM性能调优垃圾收集算法虚拟机组成.zip

    在实际应用中,JVM提供了多种GC策略,如串行GC、并行GC、并发标记清除(CMS)和G1垃圾收集器等。选择合适的GC策略,结合调整新生代和老年代的大小、暂停时间目标(Pause Time Goal)、吞吐量目标等参数,是进行JVM...

    jmx-jvm配置

    2. **Garbage Collection调优**: 使用JMX,可以监视垃圾收集器的运行情况,甚至动态调整GC参数。 3. **类加载监控**: 可以查看已加载的类信息,包括类的数量、大小等。 4. **JVM配置调整**: 通过JMX,可以在运行时...

    JVM内存管理白皮书

    它不仅向读者提供了JVM垃圾收集机制的理论知识,还提供了实操指导,比如如何选择和调优垃圾收集器以及使用哪些工具来评估垃圾收集器性能。对于开发人员来说,掌握这些知识可以帮助他们编写出性能更优、稳定性更高的...

    1_Java虚拟机(垃圾收集器和算法).pdf

    Java虚拟机(JVM)是运行Java程序的核心环境,它负责解释执行Java...了解这些垃圾收集器和算法是深入理解Java虚拟机性能优化的基础,有助于开发者更有效地编写Java代码和配置虚拟机参数,从而提升应用的性能和稳定性。

    JVM配置资料JVM配置资料

    - **G1(Garbage-First)GC**:新一代的垃圾收集器,目标是实现低延迟。 4. **JVM启动参数设置**: - `-Xms` 和 `-Xmx` 分别设置堆的初始大小和最大大小。 - `-XX:NewRatio` 设定新生代与老年代的比例。 - `-XX...

    Jvm性能优化-JVM内存结构原理分析03

    Jvm性能优化还需要考虑到类加载器的选择和配置、堆的大小和结构的选择、垃圾收集器的选择和配置等多方面的因素。 Jvm性能优化是一个非常复杂的过程,需要我们从多方面考虑、选择合适的垃圾收集器、类加载器、堆的...

    jvm性能调优-垃圾收集器parnew&CMS底层三色标记算-performance-gc-parnew-cms.zip

    本文将深入探讨两个重要的垃圾收集器——ParNew和Concurrent Mark Sweep (CMS) ——以及它们在JVM性能调优中的作用,特别是基于三色标记算法的实现。 首先,ParNew垃圾收集器是新生代(Young Generation)的默认...

    jvm 配置jvm参数

    4. **垃圾回收器选择**:在吞吐量优先的情况下,可以选择并行收集器 (`-XX:+UseParallelGC`)。并行收集器通过利用多核处理器的并行能力,提高垃圾回收效率,适合高负载的服务器应用。 5. **监控和调试**:启用详细...

    JVM高级特性之垃圾收集.pdf

    如果从GC Roots到某个对象没有任何引用链相连,那么该对象被认为是不可达的,可以被垃圾收集器回收。GC Roots包括虚拟机栈中的本地变量表中引用的对象、方法区中类静态属性引用的对象、常量池引用的对象、本地方法栈...

    Java理解G1垃圾收集器.pdf

    G1垃圾收集器是Java虚拟机(JVM)的一部分,它引入了区域(Region)的概念,将堆内存划分为多个固定大小的区域,并采用分代收集策略。 在G1收集器的工作流程中,区域可以被分为新生代(Young Generation)、老年代...

    jvm配置和优化.txt

    Shenandoah也是一种低延迟的垃圾收集器,旨在减少GC停顿时间。它可以实现接近零停顿的垃圾回收。 **2.7 Region-based GC(基于区域的垃圾回收器)** 此类垃圾回收器将堆空间划分为多个区域,每个区域根据其对象...

    JVM中CMS收集器1

    【JVM中的CMS收集器详解】 CMS(Concurrent Mark Sweep)收集器,全称为"Mostly Concurrent Mark and Sweep Garbage Collector...因此,合理配置JVM参数和选择适合的垃圾收集器是优化Java应用程序性能的关键步骤之一。

    JVM 内存结构及配置总结

    - **垃圾收集器选择**:通过`-XX:+UseParallelGC`、`-XX:+UseParallelOldGC`、`-XX:+UseParNewGC`和`-XX:+UseCMS`等参数选择合适的垃圾收集器。 - **其他参数**:例如`XX:ParallelGCThreads`用于设置并行收集时的...

    JVM-性能调优垃圾收集算法虚拟机组成

    2. **选择合适的垃圾收集器**:如新生代GC选择ParNew,老年代选择CMS或G1,以平衡吞吐量和响应时间。 3. **调整垃圾收集参数**:例如设置新生代和老年代的比例,开启并行或并发收集等。 4. **使用JIT编译**:让热点...

Global site tag (gtag.js) - Google Analytics