實際上,我通過RabbitMQ收到一封很大的郵件。 消耗此消息時,我們會記錄它。可以記錄一條巨大的消息(大約90 MB)會導致OutOfMemory錯誤? (最大堆大小:2048M)
logger.info("payload: {}", payload);
我在記錄器語句行的日誌中看到以下異常。
Caused by: java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3332) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:137) at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:121) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:421) at java.lang.StringBuffer.append(StringBuffer.java:272) at org.apache.log4j.helpers.PatternParser$LiteralPatternConverter.format(PatternParser.java:419) at org.apache.log4j.PatternLayout.format(PatternLayout.java:506) at org.graylog2.GelfMessageFactory.makeMessage(GelfMessageFactory.java:37) at org.graylog2.log.GelfAppender.append(GelfAppender.java:220) 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 org.slf4j.impl.Log4jLoggerAdapter.info(Log4jLoggerAdapter.java:324)
擺脫記錄器語句後,消息已成功處理。
所以,我可以確定記錄器導致OutOfMemoryError
? 或者這是導致OutOfMemoryError
?
堆大小爲:2048M
不確定看起來像它。你的堆空間大小是多少?嘗試使用-Xmx參數將更多堆空間分配給JVM。 – daZza
[增加eclipse中的堆空間:(java.lang.OutOfMemoryError)]可能的重複(http://stackoverflow.com/questions/8600972/increasing-heap-space-in-eclipse-java-lang-outofmemoryerror) –
@ JordiCastilla可能不是。OP只是要求幫助來驗證它是否是引發OutOfMem異常的'logger'對象。 –