You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2020/05/04 14:53:05 UTC

[tomcat] 02/03: Avoid waste of resources due to reconstruction of objects

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

markt pushed a commit to branch 7.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit bb788e126c9ba07e40b64ca78d92dd230c44552f
Author: KangZhiDong <wo...@gmail.com>
AuthorDate: Sat Apr 25 01:30:47 2020 +0800

    Avoid waste of resources due to reconstruction of objects
---
 .../apache/catalina/core/ApplicationContext.java   |  2 +-
 .../apache/catalina/ha/tcp/ReplicationValve.java   |  2 +-
 .../catalina/session/PersistentManagerBase.java    |  2 +-
 java/org/apache/juli/ClassLoaderLogManager.java    |  2 +-
 test/org/apache/catalina/valves/Benchmarks.java    | 26 +++++++++++-----------
 5 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/java/org/apache/catalina/core/ApplicationContext.java b/java/org/apache/catalina/core/ApplicationContext.java
index a95998b..833c06e 100644
--- a/java/org/apache/catalina/core/ApplicationContext.java
+++ b/java/org/apache/catalina/core/ApplicationContext.java
@@ -190,7 +190,7 @@ public class ApplicationContext implements ServletContext {
     /**
      * Thread local data used during request dispatch.
      */
-    private final ThreadLocal<DispatchData> dispatchData = new ThreadLocal<DispatchData>();
+    private static final ThreadLocal<DispatchData> dispatchData = new ThreadLocal<DispatchData>();
 
 
     /**
diff --git a/java/org/apache/catalina/ha/tcp/ReplicationValve.java b/java/org/apache/catalina/ha/tcp/ReplicationValve.java
index 53ff3ea..c5abeac 100644
--- a/java/org/apache/catalina/ha/tcp/ReplicationValve.java
+++ b/java/org/apache/catalina/ha/tcp/ReplicationValve.java
@@ -92,7 +92,7 @@ public class ReplicationValve
     /**
      * crossContext session container
      */
-    protected ThreadLocal<ArrayList<DeltaSession>> crossContextSessions =
+    protected static ThreadLocal<ArrayList<DeltaSession>> crossContextSessions =
         new ThreadLocal<ArrayList<DeltaSession>>() ;
 
     /**
diff --git a/java/org/apache/catalina/session/PersistentManagerBase.java b/java/org/apache/catalina/session/PersistentManagerBase.java
index f4db615..a935e4b 100644
--- a/java/org/apache/catalina/session/PersistentManagerBase.java
+++ b/java/org/apache/catalina/session/PersistentManagerBase.java
@@ -199,7 +199,7 @@ public abstract class PersistentManagerBase extends ManagerBase
      * Session that is currently getting swapped in to prevent loading it more
      * than once concurrently
      */
-    private final ThreadLocal<Session> sessionToSwapIn = new ThreadLocal<Session>();
+    private static final ThreadLocal<Session> sessionToSwapIn = new ThreadLocal<Session>();
 
 
     // ------------------------------------------------------------- Properties
diff --git a/java/org/apache/juli/ClassLoaderLogManager.java b/java/org/apache/juli/ClassLoaderLogManager.java
index b3e1b5f..aca6388 100644
--- a/java/org/apache/juli/ClassLoaderLogManager.java
+++ b/java/org/apache/juli/ClassLoaderLogManager.java
@@ -112,7 +112,7 @@ public class ClassLoaderLogManager extends LogManager {
      * This prefix is used to allow using prefixes for the properties names
      * of handlers and their subcomponents.
      */
-    protected ThreadLocal<String> prefix = new ThreadLocal<String>();
+    protected static ThreadLocal<String> prefix = new ThreadLocal<String>();
 
 
     /**
diff --git a/test/org/apache/catalina/valves/Benchmarks.java b/test/org/apache/catalina/valves/Benchmarks.java
index 882e7d6..2d0155f 100644
--- a/test/org/apache/catalina/valves/Benchmarks.java
+++ b/test/org/apache/catalina/valves/Benchmarks.java
@@ -76,14 +76,14 @@ public class Benchmarks {
             return "ThreadLocals";
         }
 
-        private ThreadLocal<Long> currentMillisLocal = new ThreadLocal<Long>() {
+        private static ThreadLocal<Long> currentMillisLocal = new ThreadLocal<Long>() {
             @Override
             protected Long initialValue() {
                 return Long.valueOf(0);
             }
         };
 
-        private ThreadLocal<Date> currentDateLocal = new ThreadLocal<Date>();
+        private static ThreadLocal<Date> currentDateLocal = new ThreadLocal<Date>();
 
         @Override
         public void run() {
@@ -112,14 +112,14 @@ public class Benchmarks {
             long value = 0;
         }
 
-        private ThreadLocal<MutableLong> currentMillisLocal = new ThreadLocal<MutableLong>() {
+        private static ThreadLocal<MutableLong> currentMillisLocal = new ThreadLocal<MutableLong>() {
             @Override
             protected MutableLong initialValue() {
                 return new MutableLong();
             }
         };
 
-        private ThreadLocal<Date> currentDateLocal = new ThreadLocal<Date>();
+        private static ThreadLocal<Date> currentDateLocal = new ThreadLocal<Date>();
 
         @Override
         public void run() {
@@ -149,7 +149,7 @@ public class Benchmarks {
             public Date currentDate;
         }
 
-        private ThreadLocal<Struct> currentStruct = new ThreadLocal<Struct>() {
+        private static ThreadLocal<Struct> currentStruct = new ThreadLocal<Struct>() {
             @Override
             protected Struct initialValue() {
                 return new Struct();
@@ -266,33 +266,33 @@ public class Benchmarks {
             return "ThreadLocals";
         }
 
-        private ThreadLocal<String> currentDateStringLocal = new ThreadLocal<String>();
+        private static ThreadLocal<String> currentDateStringLocal = new ThreadLocal<String>();
 
-        private ThreadLocal<Date> currentDateLocal = new ThreadLocal<Date>() {
+        private static ThreadLocal<Date> currentDateLocal = new ThreadLocal<Date>() {
             @Override
             protected Date initialValue() {
                 return new Date();
             }
         };
-        private ThreadLocal<SimpleDateFormat> dayFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
+        private static ThreadLocal<SimpleDateFormat> dayFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
             @Override
             protected SimpleDateFormat initialValue() {
                 return new SimpleDateFormat("dd");
             }
         };
-        private ThreadLocal<SimpleDateFormat> monthFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
+        private static ThreadLocal<SimpleDateFormat> monthFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
             @Override
             protected SimpleDateFormat initialValue() {
                 return new SimpleDateFormat("MM");
             }
         };
-        private ThreadLocal<SimpleDateFormat> yearFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
+        private static ThreadLocal<SimpleDateFormat> yearFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
             @Override
             protected SimpleDateFormat initialValue() {
                 return new SimpleDateFormat("yyyy");
             }
         };
-        private ThreadLocal<SimpleDateFormat> timeFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
+        private static ThreadLocal<SimpleDateFormat> timeFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
             @Override
             protected SimpleDateFormat initialValue() {
                 return new SimpleDateFormat("hh:mm:ss");
@@ -354,7 +354,7 @@ public class Benchmarks {
                     "hh:mm:ss");
         }
 
-        private ThreadLocal<Struct> structLocal = new ThreadLocal<Struct>() {
+        private static ThreadLocal<Struct> structLocal = new ThreadLocal<Struct>() {
             @Override
             protected Struct initialValue() {
                 return new Struct();
@@ -415,7 +415,7 @@ public class Benchmarks {
                     "hh:mm:ss");
         }
 
-        private ThreadLocal<Struct> structLocal = new ThreadLocal<Struct>() {
+        private static ThreadLocal<Struct> structLocal = new ThreadLocal<Struct>() {
             @Override
             protected Struct initialValue() {
                 return new Struct();


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org