This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-mime4j.git
commit 4216ca27396b3516ad874d89a60868c5032b5068 Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Thu Aug 25 08:19:57 2022 +0700 MIME4J-318 Allow disabling buffer recycling --- .../org/apache/james/mime4j/util/BufferRecycler.java | 17 +++++++++++------ .../mime4j/util/ByteArrayOutputStreamRecycler.java | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/org/apache/james/mime4j/util/BufferRecycler.java b/core/src/main/java/org/apache/james/mime4j/util/BufferRecycler.java index 5fa264b2..c89c66c4 100644 --- a/core/src/main/java/org/apache/james/mime4j/util/BufferRecycler.java +++ b/core/src/main/java/org/apache/james/mime4j/util/BufferRecycler.java @@ -19,11 +19,8 @@ package org.apache.james.mime4j.util; -import java.lang.ref.SoftReference; import java.util.ArrayList; -import java.util.Random; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.atomic.AtomicReferenceArray; +import java.util.Optional; /** * This is a small utility class, whose main functionality is to allow @@ -37,6 +34,10 @@ import java.util.concurrent.atomic.AtomicReferenceArray; * to not rely on {@code ThreadLocal} access. */ public class BufferRecycler { + static final boolean ENABLED = Optional.ofNullable(System.getProperty("james.mime4j.buffer.recycling.enabled")) + .map(Boolean::parseBoolean) + .orElse(true); + protected final ArrayList<byte[]>[] _byteBuffers; protected final ArrayList<char[]>[] _charBuffers; protected final ArrayList<int[]> _intBuffers; @@ -122,7 +123,9 @@ public class BufferRecycler { if (buffer == null) { return; } - _intBuffers.add(buffer); + if (ENABLED) { + _intBuffers.add(buffer); + } } public final char[] allocCharBuffer(int ix) { @@ -146,7 +149,9 @@ public class BufferRecycler { } public void releaseCharBuffer(int ix, char[] buffer) { - _charBuffers[ix].add(buffer); + if (ENABLED) { + _charBuffers[ix].add(buffer); + } } protected byte[] balloc(int size) { diff --git a/core/src/main/java/org/apache/james/mime4j/util/ByteArrayOutputStreamRecycler.java b/core/src/main/java/org/apache/james/mime4j/util/ByteArrayOutputStreamRecycler.java index a77d0c50..05985ff5 100644 --- a/core/src/main/java/org/apache/james/mime4j/util/ByteArrayOutputStreamRecycler.java +++ b/core/src/main/java/org/apache/james/mime4j/util/ByteArrayOutputStreamRecycler.java @@ -58,7 +58,7 @@ public class ByteArrayOutputStreamRecycler { } private void release(UnsynchronizedByteArrayOutputStream value) { - if (value != null) { + if (value != null && BufferRecycler.ENABLED) { value.reset(); buffers.offer(value); } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org