From 963cd22a051a40d8dcb496727342375020b28640 Mon Sep 17 00:00:00 2001 From: "jiachun.fjc" Date: Thu, 4 May 2017 11:36:34 +0800 Subject: [PATCH] InternalThreadLocalMap#stringBuilder: ensure memory overhead Motivation: InternalThreadLocalMap#stringBuilder: ensure memory overhead Modification: If the capacity of StringBuilder is greater than 65536 then release it on the next time you get StringBuilder and re-create a StringBuilder. Result: Possible less memory usage. --- .../java/io/netty/util/internal/InternalThreadLocalMap.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/io/netty/util/internal/InternalThreadLocalMap.java b/common/src/main/java/io/netty/util/internal/InternalThreadLocalMap.java index 7d2a71d56e..1b0e4d611b 100644 --- a/common/src/main/java/io/netty/util/internal/InternalThreadLocalMap.java +++ b/common/src/main/java/io/netty/util/internal/InternalThreadLocalMap.java @@ -35,6 +35,7 @@ import java.util.WeakHashMap; */ public final class InternalThreadLocalMap extends UnpaddedInternalThreadLocalMap { + private static final int STRING_BUILDER_MAX_CAPACITY = 1024 << 6; private static final int DEFAULT_ARRAY_LIST_INITIAL_CAPACITY = 8; public static final Object UNSET = new Object(); @@ -164,7 +165,7 @@ public final class InternalThreadLocalMap extends UnpaddedInternalThreadLocalMap public StringBuilder stringBuilder() { StringBuilder builder = stringBuilder; - if (builder == null) { + if (builder == null || builder.capacity() > STRING_BUILDER_MAX_CAPACITY) { stringBuilder = builder = new StringBuilder(512); } else { builder.setLength(0);