栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我何时应该将直接缓冲区与Java NIO一起用于网络I / O的简单规则?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我何时应该将直接缓冲区与Java NIO一起用于网络I / O的简单规则?

为了在使用Java NIO进行网络I / O时应该使用直接ByteBuffer而不是常规ByteBuffer来获得最佳性能?

直接缓冲区具有许多优点

  • 避免在Java和本机内存之间传递数据的额外副本。
  • 如果重新使用它们,则只有所使用的页面会变成真实的内存。这意味着您可以使它们超出我所需的大小,并且它们只会浪费虚拟内存。
  • 您可以有效地以本地字节顺序访问多字节基元。(基本一条机器码指令)

我应该读入堆缓冲区并从那里进行解析,执行许多get()(逐字节),还是应该将其读入直接缓冲区并从直接缓冲区进行解析?

如果您一次读取一个字节,则可能不会获得太多优势。但是,使用直接字节缓冲区,您一次可以读取2或4个字节,并且可以一次有效地解析多个字节。

[实时] [选择器]

如果您要解析实时数据,则应避免使用选择器。我发现使用阻塞NIO或忙于等待NIO可以为您提供最低的延迟性能(假设您的连接数量相对较少,例如最多20个)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376754.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号