V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git00ll
V2EX  ›  Java

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

  •  
  •   git00ll · 2022-05-23 14:11:41 +08:00 · 1421 次点击
    这是一个创建于 918 天前的主题,其中的信息可能已经有所发展或是发生改变。
    使用的是 UnpooledByteBufAllocator.DEFAULT 创建 Bytebuf ,底层实现是 directBuffer 。
    我认为他是 Unpooled 的,所以我没有释放它。netty 的检测机制给我报警了。
    
    
    报警信息是:
    ByteBuf.release() was not called before it's garbage-collected
    
    
    3 条回复    2022-05-23 18:20:39 +08:00
    BBCCBB
        1
    BBCCBB  
       2022-05-23 14:16:09 +08:00
    都要释放, 不然他不知道你什么时候不用了.

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

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

    netty 不建议这么做,netty 更希望我们主动释放它。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4041 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:12 · PVG 12:12 · LAX 20:12 · JFK 23:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.