LOG4J2-324 reduce memory usage of status messages

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/842c4ad5
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/842c4ad5
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/842c4ad5

Branch: refs/heads/LOG4J-1181
Commit: 842c4ad5a7d9a27e1e0ff59f5c8937150fdcfb21
Parents: 7db16dd
Author: rpopma <[email protected]>
Authored: Sun Nov 29 15:45:45 2015 +0900
Committer: rpopma <[email protected]>
Committed: Sun Nov 29 15:45:45 2015 +0900

----------------------------------------------------------------------
 .../ParameterizedNoReferenceMessageFactory.java      | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/842c4ad5/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedNoReferenceMessageFactory.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedNoReferenceMessageFactory.java
 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedNoReferenceMessageFactory.java
index 413227e..3ffef91 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedNoReferenceMessageFactory.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedNoReferenceMessageFactory.java
@@ -19,8 +19,8 @@ package org.apache.logging.log4j.message;
 import org.apache.logging.log4j.status.StatusLogger;
 
 /**
- * Specialized {@link ParameterizedMessageFactory} that creates {@link 
ParameterizedMessage} objects that do not retain
- * a reference to the parameter object.
+ * Specialized {@link ParameterizedMessageFactory} that creates {@link 
SimpleMessage} objects that do not retain a
+ * reference to the parameter object.
  * <p>
  * Intended for use by the {@link StatusLogger}: this logger retains a queue 
of recently logged messages in memory,
  * causing memory leaks in web applications. (LOG4J2-1176)
@@ -39,7 +39,7 @@ public final class ParameterizedNoReferenceMessageFactory 
extends AbstractMessag
     private static final long serialVersionUID = 1L;
 
     /**
-     * Creates {@link ParameterizedMessage} instances.
+     * Creates {@link SimpleMessage} instances containing the formatted 
parameterized message string.
      * 
      * @param message The message pattern.
      * @param params The message parameters.
@@ -50,12 +50,9 @@ public final class ParameterizedNoReferenceMessageFactory 
extends AbstractMessag
     @Override
     public Message newMessage(final String message, final Object... params) {
         if (params == null) {
-            return new ParameterizedMessage(message, null);
+            return new SimpleMessage(message);
         }
-        String[] stringParams = new String[params.length];
-        for (int i = 0; i < stringParams.length; i++) {
-            stringParams[i] = String.valueOf(params[i]);
-        }
-        return new ParameterizedMessage(message, stringParams);
+        final String formatted = new ParameterizedMessage(message, 
params).getFormattedMessage();
+        return new SimpleMessage(formatted);
     }
 }

Reply via email to