我正在使用帶有直接緩沖區(qū)的Netty 4.1.17-Final。我們?cè)跍y(cè)試程序中發(fā)送和接收100 MB的byte [],并且當(dāng)解碼器達(dá)到100 MB時(shí),我們將不執(zhí)行任何操作而將其丟棄。@Overridepublic void decode(ByteBuffer _in, List<Object> _out) { if (_in.remaining() == size) { // size = 100 * 1024 * 1024 _in.get(new byte[size]); }}在測(cè)試結(jié)束時(shí),我明確執(zhí)行了GC并嘗試睡眠約10秒鐘,以期預(yù)期Cleaner會(huì)釋放出來。但是,Direct Buffer并未部分發(fā)布,但Netty并未報(bào)告ByteBuf中發(fā)生泄漏。我為測(cè)試程序提供了以下選項(xiàng)。-Dio.netty.maxDirectMemory=0 -Dio.netty.leakDetection.level=PARANOID
1 回答

墨色風(fēng)雨
TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊
默認(rèn)情況下,netty pools緩沖區(qū)是這樣,如果您使用默認(rèn)分配器,則情況就是這樣。
如果您不希望合并,則應(yīng)使用UnpooledByteBufAllocator
??梢栽谝龑?dǎo)過程中使用進(jìn)行配置ChannelOption.ALLOCATOR
。
添加回答
舉報(bào)
0/150
提交
取消