Estoy trabajando en una aplicación web Java EE, que consiste en Struts, Spring e Hibernate. En eso, recibo las siguientes excepciones repetidamente (al menos una vez al día).Obteniendo problemas de espacio en Java Heap en Tomcat 7
Excepción 1:
Exception in thread "Timer-0" java.lang.OutOfMemoryError: Java heap space
at java.util.LinkedHashMap.createEntry(LinkedHashMap.java:424)
at java.util.LinkedHashMap.addEntry(LinkedHashMap.java:406)
at java.util.HashMap.put(HashMap.java:385)
at sun.util.resources.OpenListResourceBundle.loadLookup(OpenListResourceBundle.java:118)
at sun.util.resources.OpenListResourceBundle.loadLookupTablesIfNecessary(OpenListResourceBundle.java:97)
at sun.util.resources.OpenListResourceBundle.handleGetObject(OpenListResourceBundle.java:58)
at sun.util.resources.TimeZoneNamesBundle.handleGetObject(TimeZoneNamesBundle.java:59)
at java.util.ResourceBundle.getObject(ResourceBundle.java:368)
at java.util.ResourceBundle.getObject(ResourceBundle.java:371)
at java.util.ResourceBundle.getStringArray(ResourceBundle.java:351)
at sun.util.TimeZoneNameUtility.retrieveDisplayNames(TimeZoneNameUtility.java:100)
at sun.util.TimeZoneNameUtility.retrieveDisplayNames(TimeZoneNameUtility.java:81)
at java.util.TimeZone.getDisplayNames(TimeZone.java:399)
at java.util.TimeZone.getDisplayName(TimeZone.java:350)
at java.text.SimpleDateFormat.subFormat(SimpleDateFormat.java:1110)
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:899)
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:869)
at java.text.DateFormat.format(DateFormat.java:316)
at org.apache.log4j.helpers.PatternParser$DatePatternConverter.convert(PatternParser.java:443)
at org.apache.log4j.helpers.PatternConverter.format(PatternConverter.java:65)
at org.apache.log4j.PatternLayout.format(PatternLayout.java:506)
at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:310)
at org.apache.log4j.DailyRollingFileAppender.subAppend(DailyRollingFileAppender.java:369)
at org.apache.log4j.WriterAppender.append(WriterAppender.java:162)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
at org.apache.log4j.Category.callAppenders(Category.java:206)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.log(Category.java:856)
at com.mchange.v2.log.log4j.Log4jMLog$Log4jMLogger.log(Log4jMLog.java:161)
at com.mchange.v2.log.log4j.Log4jMLog$Log4jMLogger.warning(Log4jMLog.java:221)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector.run(ThreadPoolAsynchronousRunner.java:624)
Excepción 2:
Exception in thread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1" java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.HashMap.addEntry(HashMap.java:753)
at java.util.HashMap.put(HashMap.java:385)
at java.util.HashSet.add(HashSet.java:200)
at com.mchange.v2.c3p0.util.ConnectionEventSupport.addConnectionEventListener(ConnectionEventSupport.java:39)
at com.mchange.v2.c3p0.impl.NewPooledConnection.addConnectionEventListener(NewPooledConnection.java:237)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.refurbishResourceOnCheckin(C3P0PooledConnectionPool.java:292)
at com.mchange.v2.resourcepool.BasicResourcePool.attemptRefurbishResourceOnCheckin(BasicResourcePool.java:1606)
at com.mchange.v2.resourcepool.BasicResourcePool.access$200(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask.run(BasicResourcePool.java:1228)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Exception in thread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#4" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "Task-[email protected]6c8bb765" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#3" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "Task-[email protected]6c8bb765" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "Task-[email protected]6c8bb765" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "Timer-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread ""http-bio-8080"-exec-2" java.lang.OutOfMemoryError: Java heap space
Exception in thread ""http-bio-8443"-Acceptor-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread ""http-bio-8080"-exec-3" java.lang.OutOfMemoryError: Java heap space
Exception in thread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#4" java.lang.OutOfMemoryError: GC overhead limit exceeded
Y esta es mi configuración:
-server -Xms2048m -Xmx2048m
-XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:PermSize=512m
-XX:MaxPermSize=1024m -XX:+DisableExplicitGC"
Puede alguien por favor señalar que estoy recibiendo esto exceptio ns debido a estas configuraciones o cualquier otra cosa?
Sé que hay algún problema en mi código, pero ¿cómo puedo predecir la salida de estos problemas? He intentado Eclipse MAT para analizar volcados de memoria, pero no tuve ni idea.
Ya he intentado aumentar la memoria para esto, pero no sirvió de mucho excepto reducir la frecuencia de estas excepciones.
Por favor ayuda. Gracias por adelantado.
http://stackoverflow.com/questions/5260643/solr-java-heap-space-out-of-memory –