The @PerformanceSensitive("allocation") annotation was what we were using
for that.

On 6 November 2016 at 08:17, Gary Gregory <[email protected]> wrote:

> This code needs comments to warn against future changes.
>
> Gary
> ---------- Forwarded message ----------
> From: <[email protected]>
> Date: Nov 5, 2016 11:59 PM
> Subject: logging-log4j2 git commit: LOG4J2-1665 make
> IntegerPatternConverter garbage-free
> To: <[email protected]>
> Cc:
>
> Repository: logging-log4j2
> Updated Branches:
>   refs/heads/master e0058d672 -> 84e16b884
>
>
> LOG4J2-1665 make IntegerPatternConverter garbage-free
>
>
> Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
> Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit
> /84e16b88
> Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/84e16b88
> Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/84e16b88
>
> Branch: refs/heads/master
> Commit: 84e16b8843f32c124f623ffdec8a68e20cc5483a
> Parents: e0058d6
> Author: rpopma <[email protected]>
> Authored: Sun Nov 6 15:59:00 2016 +0900
> Committer: rpopma <[email protected]>
> Committed: Sun Nov 6 15:59:00 2016 +0900
>
> ----------------------------------------------------------------------
>  .../log4j/core/pattern/IntegerPatternConverter.java | 16 +++++++---------
>  src/changes/changes.xml                             |  3 +++
>  2 files changed, 10 insertions(+), 9 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8
> 4e16b88/log4j-core/src/main/java/org/apache/logging/log4j/co
> re/pattern/IntegerPatternConverter.java
> ----------------------------------------------------------------------
> diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pat
> tern/IntegerPatternConverter.java b/log4j-core/src/main/java/org
> /apache/logging/log4j/core/pattern/IntegerPatternConverter.java
> index 5380d45..9e6d419 100644
> --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pat
> tern/IntegerPatternConverter.java
> +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pat
> tern/IntegerPatternConverter.java
> @@ -20,14 +20,13 @@ import java.util.Date;
>
>  import org.apache.logging.log4j.core.config.plugins.Plugin;
>
> -
>  /**
>   * Formats an integer.
>   */
>  @Plugin(name = "IntegerPatternConverter", category = "FileConverter")
>  @ConverterKeys({ "i", "index" })
>  public final class IntegerPatternConverter extends
> AbstractPatternConverter implements ArrayPatternConverter {
> -
> +
>      /**
>       * Singleton.
>       */
> @@ -46,16 +45,15 @@ public final class IntegerPatternConverter extends
> AbstractPatternConverter impl
>       * @param options options, may be null.
>       * @return instance of pattern converter.
>       */
> -    public static IntegerPatternConverter newInstance(
> -        final String[] options) {
> +    public static IntegerPatternConverter newInstance(final String[]
> options) {
>          return INSTANCE;
>      }
>
>      @Override
>      public void format(final StringBuilder toAppendTo, final Object...
> objects) {
> -        for (final Object obj : objects) {
> -            if (obj instanceof Integer) {
> -                format(obj, toAppendTo);
> +        for (int i = 0; i < objects.length; i++) {
> +            if (objects[i] instanceof Integer) {
> +                format(objects[i], toAppendTo);
>                  break;
>              }
>          }
> @@ -67,9 +65,9 @@ public final class IntegerPatternConverter extends
> AbstractPatternConverter impl
>      @Override
>      public void format(final Object obj, final StringBuilder toAppendTo) {
>          if (obj instanceof Integer) {
> -            toAppendTo.append(obj.toString());
> +            toAppendTo.append(((Integer) obj).intValue());
>          } else if (obj instanceof Date) {
> -            toAppendTo.append(Long.toString(((Date) obj).getTime()));
> +            toAppendTo.append(((Date) obj).getTime());
>          }
>      }
>  }
>
> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8
> 4e16b88/src/changes/changes.xml
> ----------------------------------------------------------------------
> diff --git a/src/changes/changes.xml b/src/changes/changes.xml
> index a204389..1925175 100644
> --- a/src/changes/changes.xml
> +++ b/src/changes/changes.xml
> @@ -24,6 +24,9 @@
>    </properties>
>    <body>
>      <release version="2.8" date="2016-MM-DD" description="GA Release 2.8">
> +      <action issue="LOG4J2-1665" dev="rpopma" type="fix">
> +        (GC) Avoid allocating temporary objects in
> IntegerPatternConverter.
> +      </action>
>        <action issue="LOG4J2-1637" dev="rpopma" type="fix">
>          Fixed problems when used in OSGi containers (IllegalAccessError,
> NoClassDefFoundError).
>        </action>
>
>


-- 
Matt Sicker <[email protected]>

Reply via email to