netty UnpooledByte 需要释放吗?为啥我没释放被告警了

2022-05-23 14:11:41 +08:00
 git00ll
使用的是 UnpooledByteBufAllocator.DEFAULT 创建 Bytebuf ,底层实现是 directBuffer 。
我认为他是 Unpooled 的,所以我没有释放它。netty 的检测机制给我报警了。

报警信息是:
ByteBuf.release() was not called before it's garbage-collected

1271 次点击
所在节点    Java
3 条回复
BBCCBB
2022-05-23 14:16:09 +08:00
都要释放, 不然他不知道你什么时候不用了.

它的释放只是直接放回到 direct mem,

Pool 的是放回到 Netty 池管理 direct mem 里.
BBCCBB
2022-05-23 14:17:42 +08:00
不对,, DirectByteBuffer jvm 会自行回收...
git00ll
2022-05-23 18:20:39 +08:00
自己回答一下,Unpooled.directBuffer 会被 gc 回收。所以不会引起 oom ,当然报警也是真的,因为我们确实没有主动释放它。

netty 不建议这么做,netty 更希望我们主动释放它。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/854701

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX