netty bytebuf 中release方法和clear方法的区别

项目中使用netty开发时遇到的坑

  • 项目运行一段时间后内存溢出 第一时间想到了netty中有资源没有被释放掉.查看代码在给硬件相应数据时 自行创建了byteBuf 并调用了clear()释放, 经过查阅代码正确释放buf的方法是release方法
    ByteBuf byteBuf = Unpooled.buffer();

Netty ByteBuf中的release方法和clear方法的区别如下:

  1. release方法:释放ByteBuf的所有资源,包括内存和其他资源。调用该方法后,ByteBuf不能再被使用。

  2. clear方法:将ByteBuf的读写索引重置为0,但并不会释放ByteBuf的内存和其他资源。调用该方法后,ByteBuf可以继续被使用。

因此,如果需要完全释放ByteBuf的资源,应该调用release方法。如果只是需要重用ByteBuf,并且不需要保留之前的数据,可以调用clear方法。

 

你可能感兴趣的:(java)