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

Reply via email to