Explorar o código

修复tcp可能内存泄漏

zhouhao %!s(int64=2) %!d(string=hai) anos
pai
achega
7540ab9cac

+ 6 - 2
jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/client/VertxTcpClient.java

@@ -1,5 +1,7 @@
 package org.jetlinks.community.network.tcp.client;
 
+import io.netty.buffer.ByteBuf;
+import io.netty.util.ReferenceCountUtil;
 import io.vertx.core.buffer.Buffer;
 import io.vertx.core.net.NetClient;
 import io.vertx.core.net.NetSocket;
@@ -77,10 +79,12 @@ public class VertxTcpClient implements TcpClient {
                     sink.error(new SocketException("socket closed"));
                     return;
                 }
-                Buffer buffer = Buffer.buffer(message.getPayload());
+                ByteBuf buf = message.getPayload();
+                Buffer buffer = Buffer.buffer(buf);
                 socket.write(buffer, r -> {
-                    keepAlive();
+                    ReferenceCountUtil.safeRelease(buf);
                     if (r.succeeded()) {
+                        keepAlive();
                         sink.success();
                     } else {
                         sink.error(r.cause());