为了账号安全,请及时绑定邮箱和手机立即绑定

ByteBuf使用的直接缓冲区未完全释放

ByteBuf使用的直接缓冲区未完全释放

慕勒3428872 2021-04-08 18:15:50
我正在使用带有直接缓冲区的Netty 4.1.17-Final。我们在测试程序中发送和接收100 MB的byte [],并且当解码器达到100 MB时,我们将不执行任何操作而将其丢弃。@Overridepublic void decode(ByteBuffer _in, List<Object> _out) {    if (_in.remaining() == size) {   // size = 100 * 1024 * 1024        _in.get(new byte[size]);    }}在测试结束时,我明确执行了GC并尝试睡眠约10秒钟,以期预期Cleaner会释放出来。但是,Direct Buffer并未部分发布,但Netty并未报告ByteBuf中发生泄漏。我为测试程序提供了以下选项。-Dio.netty.maxDirectMemory=0 -Dio.netty.leakDetection.level=PARANOID
查看完整描述

1 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

默认情况下,netty pools缓冲区是这样,如果您使用默认分配器,则情况就是这样。

如果您不希望合并,则应使用UnpooledByteBufAllocator。可以在引导过程中使用进行配置ChannelOption.ALLOCATOR


查看完整回答
反对 回复 2021-04-21
  • 1 回答
  • 0 关注
  • 299 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信