You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2022/06/29 05:56:36 UTC

[dubbo] branch master updated: fix memory leak (#10231)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 7a0c805487 fix memory leak (#10231)
7a0c805487 is described below

commit 7a0c80548712d2a6094838a3b9a65eb9baa1aa60
Author: 一个不知名的Java靓仔 <cl...@gmail.com>
AuthorDate: Wed Jun 29 13:56:24 2022 +0800

    fix memory leak (#10231)
---
 .../dubbo/common/serialize/hessian2/Hessian2ObjectInput.java | 12 +++---------
 .../common/serialize/hessian2/Hessian2ObjectOutput.java      | 12 +++---------
 2 files changed, 6 insertions(+), 18 deletions(-)

diff --git a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectInput.java b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectInput.java
index 2729e6ed37..9855c1acdf 100644
--- a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectInput.java
+++ b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectInput.java
@@ -31,18 +31,12 @@ import java.lang.reflect.Type;
  */
 public class Hessian2ObjectInput implements ObjectInput, Cleanable {
 
-    private static ThreadLocal<Hessian2Input> INPUT_TL = ThreadLocal.withInitial(() -> {
-        Hessian2Input h2i = new Hessian2Input(null);
-        h2i.setSerializerFactory(Hessian2FactoryInitializer.getInstance().getSerializerFactory());
-        h2i.setCloseStreamOnClose(true);
-        return h2i;
-    });
-
     private final Hessian2Input mH2i;
 
     public Hessian2ObjectInput(InputStream is) {
-        mH2i = INPUT_TL.get();
-        mH2i.init(is);
+        mH2i = new Hessian2Input(is);
+        mH2i.setSerializerFactory(Hessian2FactoryInitializer.getInstance().getSerializerFactory());
+        mH2i.setCloseStreamOnClose(true);
     }
 
     @Override
diff --git a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectOutput.java b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectOutput.java
index 874a2c8b21..31bccf1f51 100644
--- a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectOutput.java
+++ b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectOutput.java
@@ -30,18 +30,12 @@ import java.io.OutputStream;
  */
 public class Hessian2ObjectOutput implements ObjectOutput, Cleanable {
 
-    private static ThreadLocal<Hessian2Output> OUTPUT_TL = ThreadLocal.withInitial(() -> {
-        Hessian2Output h2o = new Hessian2Output(null);
-        h2o.setSerializerFactory(Hessian2FactoryInitializer.getInstance().getSerializerFactory());
-        h2o.setCloseStreamOnClose(true);
-        return h2o;
-    });
-
     private final Hessian2Output mH2o;
 
     public Hessian2ObjectOutput(OutputStream os) {
-        mH2o = OUTPUT_TL.get();
-        mH2o.init(os);
+        mH2o = new Hessian2Output(os);
+        mH2o.setSerializerFactory(Hessian2FactoryInitializer.getInstance().getSerializerFactory());
+        mH2o.setCloseStreamOnClose(true);
     }
 
     @Override