实际上,我通过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'对象。 –