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;
     }

Reply via email to