This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 37ba13f  Shutdown message API
37ba13f is described below

commit 37ba13fa5a436be2437fa40d335bbb29f03e926a
Author: JamesBognar <[email protected]>
AuthorDate: Wed Sep 29 11:00:18 2021 -0400

    Shutdown message API
---
 .../java/org/apache/juneau/BeanContextBuilder.java |  5 ++++-
 .../java/org/apache/juneau/internal/IOUtils.java   | 22 ++++++++++++++--------
 2 files changed, 18 insertions(+), 9 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
index 5f64740..c94c9519 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
@@ -22,6 +22,7 @@ import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.util.*;
 import java.util.concurrent.*;
+import java.util.concurrent.atomic.*;
 
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.http.header.*;
@@ -60,8 +61,9 @@ public class BeanContextBuilder extends ContextBuilder {
        
//-----------------------------------------------------------------------------------------------------------------
 
        private static final ConcurrentHashMap<HashKey,BeanContext> CACHE = new 
ConcurrentHashMap<>();
+       private static final AtomicInteger CACHE_HITS = new AtomicInteger();
        static {
-               SystemUtils.shutdownMessage(()->"Bean contexts created: " + 
CACHE.size());
+               SystemUtils.shutdownMessage(()->"Bean context cache:  hits=" + 
CACHE_HITS.get() + ", misses: " + CACHE.size());
        }
 
        
//-----------------------------------------------------------------------------------------------------------------
@@ -239,6 +241,7 @@ public class BeanContextBuilder extends ContextBuilder {
                        locale,
                        propertyNamer
                );
+               CACHE_HITS.incrementAndGet();
                BeanContext bc = CACHE.get(key);
                if (bc == null) {
                        bc = new BeanContext(this);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
index 53f93b3..1e3fa33 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
@@ -37,10 +37,14 @@ public final class IOUtils {
        private static final ThreadLocal<byte[]> BYTE_BUFFER_CACHE = 
(Boolean.getBoolean("juneau.disableIoBufferReuse") ? null : new 
ThreadLocal<>());
        private static final ThreadLocal<char[]> CHAR_BUFFER_CACHE = 
(Boolean.getBoolean("juneau.disableIoBufferReuse") ? null : new 
ThreadLocal<>());
 
-       static final AtomicInteger cacheHits = new AtomicInteger();
+       static final AtomicInteger BYTE_BUFFER_CACHE_HITS = new AtomicInteger();
+       static final AtomicInteger BYTE_BUFFER_CACHE_MISSES = new 
AtomicInteger();
+       static final AtomicInteger CHAR_BUFFER_CACHE_HITS = new AtomicInteger();
+       static final AtomicInteger CHAR_BUFFER_CACHE_MISSES = new 
AtomicInteger();
 
        static {
-               SystemUtils.shutdownMessage(()->"I/O buffer cache hits: " + 
cacheHits.get());
+               SystemUtils.shutdownMessage(()->"Byte buffer cache:  
hits="+BYTE_BUFFER_CACHE_HITS.get()+", misses=" + BYTE_BUFFER_CACHE_MISSES);
+               SystemUtils.shutdownMessage(()->"Char buffer cache:  
hits="+CHAR_BUFFER_CACHE_HITS.get()+", misses=" + CHAR_BUFFER_CACHE_MISSES);
        }
 
        /** Reusable empty reader. */
@@ -745,10 +749,11 @@ public final class IOUtils {
                if (BYTE_BUFFER_CACHE != null) {
                        byte[] x = BYTE_BUFFER_CACHE.get();
                        if (x == null) {
-                                x = new byte[BUFF_SIZE];
-                                BYTE_BUFFER_CACHE.set(x);
+                               x = new byte[BUFF_SIZE];
+                               BYTE_BUFFER_CACHE.set(x);
+                               BYTE_BUFFER_CACHE_MISSES.incrementAndGet();
                        } else {
-                               cacheHits.incrementAndGet();
+                               BYTE_BUFFER_CACHE_HITS.incrementAndGet();
                        }
                        return x;
                }
@@ -759,10 +764,11 @@ public final class IOUtils {
                if (CHAR_BUFFER_CACHE != null) {
                        char[] x = CHAR_BUFFER_CACHE.get();
                        if (x == null) {
-                                x = new char[BUFF_SIZE];
-                                CHAR_BUFFER_CACHE.set(x);
+                               x = new char[BUFF_SIZE];
+                               CHAR_BUFFER_CACHE.set(x);
+                               CHAR_BUFFER_CACHE_MISSES.incrementAndGet();
                        } else {
-                               cacheHits.incrementAndGet();
+                               CHAR_BUFFER_CACHE_HITS.incrementAndGet();
                        }
                        return x;
                }

Reply via email to