LOG4J2-1858 ensure ThreadLocal StringBuffer won't hold excessively much memory after logging a long message
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/28553e1d Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/28553e1d Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/28553e1d Branch: refs/heads/master Commit: 28553e1d44b41fcf53796633b56431b259fc9411 Parents: a903427 Author: rpopma <rpo...@apache.org> Authored: Sun Apr 16 16:51:24 2017 +0900 Committer: rpopma <rpo...@apache.org> Committed: Sun Apr 16 16:51:24 2017 +0900 ---------------------------------------------------------------------- .../org/apache/logging/log4j/message/ParameterizedMessage.java | 3 +++ 1 file changed, 3 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/28553e1d/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java index 6936a53..c4a1bbf 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java @@ -18,7 +18,9 @@ package org.apache.logging.log4j.message; import java.util.Arrays; +import org.apache.logging.log4j.util.Constants; import org.apache.logging.log4j.util.StringBuilderFormattable; +import org.apache.logging.log4j.util.StringBuilders; /** * Handles messages that consist of a format string containing '{}' to represent each replaceable token, and @@ -200,6 +202,7 @@ public class ParameterizedMessage implements Message, StringBuilderFormattable { final StringBuilder buffer = getThreadLocalStringBuilder(); formatTo(buffer); formattedMessage = buffer.toString(); + StringBuilders.trimToMaxSize(buffer, Constants.MAX_REUSABLE_MESSAGE_SIZE); } return formattedMessage; }