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;
}