当前位置: 首页 > 知识库问答 >
问题:

创建一个Netty ByteBuf

充鑫鹏
2023-03-14

如果我只是想在Netty应用程序中不使用ByteBuf。我使用ByteBuf buf=unpooled.wrappedBuffer(字节创建一个ByteBuf,那么我必须在函数末尾调用buf.release吗?

 public void process(byte[] bytes) {

            ByteBuf frame = Unpooled.wrappedBuffer(bytes);

//something
            frame.release();
        }

共有1个答案

柳培
2023-03-14

UnpooledHeapByteBuf.release方法实现如下:

@Override
public boolean release() {
    for (;;) {
        int refCnt = this.refCnt;
        if (refCnt == 0) {
            throw new IllegalReferenceCountException(0, -1);
        }

        if (refCntUpdater.compareAndSet(this, refCnt, refCnt - 1)) {
            if (refCnt == 1) {
                deallocate();
                return true;
            }
            return false;
        }
    }
}

deallocate方法:

@Override
protected void deallocate() {
    array = null;
}

堆内存可以由垃圾回收器回收,所以不调用release方法在理论上可能不会造成内存泄漏

 类似资料:
  • 问题内容: 我试图扩展到符合以创建的类型。最后,我希望有这样的东西可以打印整个字母: 目前,我正在使用类型来计算两个字符之间的距离。因为类型无法使用标量,所以我需要根据Character创建一个String,获取第一个标量的值,然后计算它们之间的距离: 即使这样,我仍然得到不符合协议和的错误。编译器似乎没有选择随附的关联类型: 我想念什么? 问题答案: 如前所述,由于a 可以由多个unicode标

  • 如你所知,Android使用SQLite作为它的数据库管理系统。SQLite是一个嵌入app的一个数据库,它的确是非常轻量的。这就是为什么这是手机app的不错的选择。 尽管如此,它的操作数据库的API在Android中是非常原生的。你将会需要编写很多SQL语句和你的对象与ContentValues或者Cursors之间的解析过程。很感激的,联合使用Kotlin和Anko,我们可以大量简化这些。 当

  • A package is a directory with some code and a package.json file that provides information to Yarn about your package. Most packages use some kind of version control system. The most common one is git

  • 以下步骤假设您已经了解了 Node.js 和 npm 的基本知识。如果对它们不熟悉,可以访问 https://docs.npmjs.com/ 来了解更多关于 npm 的用法。 Weex 提供了一个命令行工具 weex-cli 来帮助开发者使用 Weex。它可以用来快速创建一个空项目、初始化 iOS 和 Android 开发环境、调试、安装插件等操作。 目前 weex-cli 只支持创建 Vue.j

  • 我正在使用GeoTools Java库进行一些几何计算。在我的例子中,我使用的是一个形状文件,其中包含某个城市的所有邻域多边形。我想知道在那个城市的每一个可能的坐标,它对应于哪个社区。因此,我的方法是简单地在邻近的多边形上循环,并检查给定点是否在其中。下面是所提到的代码的一部分: 对如何摆脱这个问题有什么建议吗?

  • 这个指引会带搭建一个简单的『Hello』程序。当然这只是开始,迈出这一步你将感受到 Blade 的强大