You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by li...@apache.org on 2023/05/19 03:26:35 UTC

[tomcat] branch 8.5.x updated: Clear SocketWrapper reference to help GC

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

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


The following commit(s) were added to refs/heads/8.5.x by this push:
     new 2a084c266e Clear SocketWrapper reference to help GC
2a084c266e is described below

commit 2a084c266e09b048c1a49c749cb8ab1e8feedbfc
Author: lihan <li...@apache.org>
AuthorDate: Fri May 19 11:24:27 2023 +0800

    Clear SocketWrapper reference to help GC
---
 java/org/apache/coyote/AbstractProcessor.java      | 3 +++
 java/org/apache/coyote/http11/Http11Processor.java | 1 -
 java/org/apache/tomcat/util/net/Nio2Channel.java   | 1 +
 java/org/apache/tomcat/util/net/NioChannel.java    | 1 +
 4 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/java/org/apache/coyote/AbstractProcessor.java b/java/org/apache/coyote/AbstractProcessor.java
index 2a28d683ed..0295396112 100644
--- a/java/org/apache/coyote/AbstractProcessor.java
+++ b/java/org/apache/coyote/AbstractProcessor.java
@@ -709,6 +709,9 @@ public abstract class AbstractProcessor extends AbstractProcessorLight implement
     public void recycle() {
         errorState = ErrorState.NONE;
         asyncStateMachine.recycle();
+        // Clear fields that can be cleared to aid GC and trigger NPEs if this
+        // is reused
+        socketWrapper = null;
     }
 
 
diff --git a/java/org/apache/coyote/http11/Http11Processor.java b/java/org/apache/coyote/http11/Http11Processor.java
index b8705441e8..5cc2ecc752 100644
--- a/java/org/apache/coyote/http11/Http11Processor.java
+++ b/java/org/apache/coyote/http11/Http11Processor.java
@@ -1612,7 +1612,6 @@ public class Http11Processor extends AbstractProcessor {
         inputBuffer.recycle();
         outputBuffer.recycle();
         upgradeToken = null;
-        socketWrapper = null;
         sendfileData = null;
     }
 
diff --git a/java/org/apache/tomcat/util/net/Nio2Channel.java b/java/org/apache/tomcat/util/net/Nio2Channel.java
index a2612fd0c1..6040b8855e 100644
--- a/java/org/apache/tomcat/util/net/Nio2Channel.java
+++ b/java/org/apache/tomcat/util/net/Nio2Channel.java
@@ -79,6 +79,7 @@ public class Nio2Channel implements AsynchronousByteChannel {
     @Override
     public void close() throws IOException {
         sc.close();
+        reset(this.sc, null);
     }
 
 
diff --git a/java/org/apache/tomcat/util/net/NioChannel.java b/java/org/apache/tomcat/util/net/NioChannel.java
index 8e3cb4f0e1..777880d67d 100644
--- a/java/org/apache/tomcat/util/net/NioChannel.java
+++ b/java/org/apache/tomcat/util/net/NioChannel.java
@@ -99,6 +99,7 @@ public class NioChannel implements ByteChannel, ScatteringByteChannel, Gathering
     @Override
     public void close() throws IOException {
         sc.close();
+        reset(this.sc,null);
     }
 
     /**


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