java.lang.OutOfMemoryError:GC overhead limit exceeded
Error log:
java.lang.OutOfMemoryError:GC overhead limit exceeded
at java.lang.String.replace(String.java:2021)
at weblogic.utils.classloaders.CodeGenClassFinder.getClassSource(CodeGenClassFinder.java:24)
at weblogic.utils.classloaders.ChangeAwareClassLoader.upToDate(ChangeAwareClassLoader.java:107)
at weblogic.servlet.internal.FilterWrapper.needToReload(FilterWrapper.java:120)
at weblogic.servlet.internal.FilterWrapper.checkForReload(FilterWrapper.java:101)
at weblogic.servlet.internal.FilterWrapper.getFilter(FilterWrapper.java:41)
at weblogic.servlet.internal.FilterChainImpl.add(FilterChainImpl.java:35)
at weblogic.servlet.internal.FilterManager.getFilterChain(FilterManager.java:255)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3727)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
SUBSYSTEM = HTTP USERID = <WLS Kernel> SEVERITY = Error THREAD = [ACTIVE] ExecuteThread: '11' for queue: 'weblogic.kernel.Default (self-tuning)' MSGID = BEA-101020 MACHINE = cdcjp62.**.oracle.** TXID = CONTEXTID = 0124868f65b997e9:-6942af24:13fadf1d49d:-8000-0000000000001714 TIMESTAMP = 1373067991979
WatchAlarmType: AutomaticReset
WatchAlarmResetPeriod: 30000
Root Cause:
This issue is seen with all version of WLS 10.3 and above when running with JDK1.6 with all fix packs.
java.lang.OutOfMemoryError:GC overhead limit exceeded -
Indicates that due to some reasons the garbage collection is taking an excesive amount of time.
Parallel collector will throw java.lang.OutOfMemory if much time is spent on GC. If more than 98% of time is spend in GC and less than 2% of hep is recovered an java.lang.OutOfMemoryError is thrown
Solution: (Workaround)
This java.lang.OutOfMemoryError:GC overhead limit exceeded can be avoided by diadabling the GC overhed feature in JDK 1.6 by using this argument to start scripts
-XX:-UseGCOverheadLimit.