• java.lang.OutOfMemoryError: GC overhead limit exceeded


         今天现场weblogic报java.lang.OutOfMemoryError: GC overhead limit exceeded,在metalink查了下,有明白解释,要设置一个JVM參数。只是因为当前weblogic内存设置为4G,所以设置參数的做法事实上并非解决这个问题之道。还是要分析weblogic 内存溢出文件,得出是哪个功能有问题:

    APPLIES TO:

    Oracle WebLogic Server - Version 10.3 and later
    Information in this document applies to any platform.
    ***Checked for relevance on 22-Oct-2014***

    SYMPTOMS

    Issue of getting below "java.lang.OutOfMemoryError: GC overhead limit exceeded" exception in WebLogic 10.3 and above versions was reported when running with Sun JDK 1.6 with all fix packs:

    Sep 30, 2010 4:13:27 PM CDT> <Error> <Kernel> <BEA-000802> <ExecuteRequest failed 
    java.lang.OutOfMemoryError: GC overhead limit exceeded. 
    java.lang.OutOfMemoryError: GC overhead limit exceeded 
    at java.util.Arrays.copyOfRange(Arrays.java:3209) 
    at java.lang.String.<init>(String.java:216) 
    at java.lang.StringBuilder.toString(StringBuilder.java:430) 
    at weblogic.servlet.internal.ServletRequestImpl.toString(ServletRequestImpl.java:243) 
    at java.lang.String.valueOf(String.java:2827) 
    Truncated. see log file for complete stacktrace

    CAUSE

    The "java.lang.OutOfMemoryError: GC overhead limit exceeded" message means that for some reason the garbage collector is taking an excessive amount of time. 

    The parallel collector will throw an OutOfMemoryError if too much time is being spent in garbage collection: if more than 98% of the total time is spent in garbage collection or less than 2% of the heap is recovered by garbage collection, an OutOfMemoryError will be thrown.

    This feature of throwing  "GC overhead limit exceeded" message is designed to prevent applications from running for an extended period of time while making little or no progress because the heap is too small.

    --原因是垃圾回收器因为某些原因花了非常长时间。并行的垃圾回收器抛出内存溢出的错误。要么是花了非常长时间做GC的操作,或是仅仅有2%的堆内存又来回收。GC overhead limit exceeded被设计出来,是为了阻止应用程序执行的时候。因为堆内存设置的小而没有进展。

    SOLUTION

    You can avoid the above "java.lang.OutOfMemoryError: GC overhead limit exceeded" exception by disabling the GC overhead limit feature in Sun JDK 1.6 by adding the following argument to the start script of JVM:

    -XX:-UseGCOverheadLimit

    However, please note that disabling the overhead limit only avoids getting the OutOfMemoryError at an early stage. The OutOfMemoryError is very likely to be thrown at a later stage, because it does not remove the underlying problem. You should still look into your application and JVM settings to find the cause of GC taking an excessively long time.

    --避免这样的错误,在JVM中显示设置-XX:-UseGCOverheadLimit


  • 相关阅读:
    二维码
    struts2 result type=(chain、dispatcher、redirect、redirect-action)
    hibernate bean注解
    js uploadify
    2进制转化成字符串
    server.xml
    html css
    页面乱码
    java class 路径问题
    table th td 宽度
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5261314.html
Copyright © 2020-2023  润新知