`

线上周期fullGC

    博客分类:
  • Java
 
阅读更多


总结来说,目前有两个问题会自动触发系统fullgc.
 一: tomcat6.0.35的server.xml配置的

     <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
          会触发1小时一次fullgc.
                    Class<?> clazz = Class.forName("sun.misc.GC");
                        Method method = clazz.getDeclaredMethod(  "requestLatency",     new Class[] {long.class});
                        method.invoke(null, Long.valueOf(3600000));  # 一个小时3万六千秒 #反射方式调了一把
    tomcat6.0.43以后fix了这个问题。
    tomcat7高版本【 现在线上镜像tomcat7.0.61】 也不会有这个问题。
   
     二: cxf-common-utilities-2.5.2-sources.jar的 org.apache.cxf.common.logging.JDKBugHacks
              代码和上面差不多,
              默认也会触发一小时fullgc一次.

对于性能要求高的高并发的系统,一小时一次fullgc,会周期性影响性能
1建议升级tomcat到7以上
 2  如果一定要用cxf的话,升级cxf到2.8.0,并且在jvm启动参数添加,- Dorg.apache.cxf.JDKBugHacks.gcRequestLatency=true


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

 

=========

二、

ODC的

export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms6G -Xmx6G  -XX:MaxMetaspaceSize=1024m -XX:+UseConcMarkSweepGC -XX:ParallelGCThreads=8 -XX:+UseParNewGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=50 -XX:+UnlockDiagnosticVMOptions -XX:-UseBiasedLocking -XX:-UseCounterDecay -XX:AutoBoxCacheMax=20000 -XX:+ParallelRefProcEnabled -XX:+ExplicitGCInvokesConcurrent -XX:+CMSParallelRemarkEnabled -XX:ParGCCardsPerStrideChunk=4096  -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$CATALINA_HOME/logs/ -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300"

 

ioms的

export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms6144m -Xmx6144m -XX:MaxMetaspaceSize=256m -XX:NewRatio=2 -XX:ParallelGCThreads=8 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=60 -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=3 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300"

 

 

三、

 

分享到:
评论

相关推荐

    JVM问题分析调优经验

    线上系统频繁出现Full GC的现象通常表现为机器CPU负载过高和频繁的Full GC报警。Full GC是JVM中最耗时的操作,可能导致系统响应变慢甚至服务中断。其常见原因包括: 1. 对象频繁进入老年代,频繁触发Full GC。 2. 高...

    第四讲-JVM调优原理深度剖析、服务线上优化实践.pdf

    3. 减少Full GC的发生频率,延长其周期,以减少对系统的影响。 在64位操作系统上,JVM理论上可以分配无限的内存,但在实际应用中,需要根据压力测试和线上运行情况合理分配内存。 垃圾在JVM中指的是没有被任何引用...

    内存泄露分析

    - **近期GC情况**:从历史GC日志来看,Old区的内存使用量呈现持续增长的趋势,而非正常的周期性增减。这表明随着时间的推移,内存泄露问题一直在恶化。 ##### 1.4 堆中对象概况 通过`jmap`命令获取堆中对象的信息...

    互联网金融Hbase大数据实践.pptx

    高可用需要避免 Full GC 和 Region Server 的阻塞,确保数据的可靠性和安全性。 HBase 数据存储方式 HBase 的数据存储方式有多种,如 KV 存储、文档型存储和列式存储等。每种存储方式都有其特点和优点,如 KV 存储...

    2023最新JVM+多线程面试真题

    可以使用JConsole、VisualVM等工具查看GC日志,分析FGC(Full GC)频率。检查JVM参数设置,如堆大小、新生代与老年代的比例、垃圾收集器类型等。排查可能的原因,如内存泄漏、元空间满、显式调用`System.gc()`等。 ...

    金九银十Java综合面试总结1

    垃圾收集算法包括年轻代GC(Minor GC)和全GC(Full GC)。JDK 1.7的HashMap使用链表解决冲突,1.8引入红黑树提高查找效率。 ConcurrentHashMap是线程安全的HashMap实现,使用分段锁提高并发性能。 【Java基础语法...

Global site tag (gtag.js) - Google Analytics