ByteBuffer的allocate和allocateDirect

ByteBuffer的allocate和allocateDirect在Java中当我们要对数据进行更底层的操作时,一般是操作数据的字节(byte)形式,这时经常会用到ByteBuffer这样一个类。ByteBuffer提供了两种静态实例方式:Java代码publics

大家好,又见面了,我是你们的朋友全栈君。

在Java中当我们要对数据进行更底层的操作时,一般是操作数据的字节(byte)形式,这时经常会用到ByteBuffer这样一个类。ByteBuffer提供了两种静态实例方式: 

Java代码  
收藏代码

  1. public static ByteBuffer allocate(int capacity)  
  2. public static ByteBuffer allocateDirect(int capacity)  

为什么要提供两种方式呢?这与Java的内存使用机制有关。第一种分配方式产生的内存开销是在JVM中的,而另外一种的分配方式产生的开销在JVM之外,以就是系统级的内存分配。当Java程序接收到外部传来的数据时,首先是被系统内存所获取,然后在由系统内存复制复制到JVM内存中供Java程序使用。所以在另外一种分配方式中,能够省去复制这一步操作,效率上会有所提高。可是系统级内存的分配比起JVM内存的分配要耗时得多,所以并非不论什么时候allocateDirect的操作效率都是最高的。以下是一个不同容量情况下两种分配方式的操作时间对照: 

<span role="heading" aria-level="2">ByteBuffer的allocate和allocateDirect 

由图能够看出,当操作数据量非常小时,两种分配方式操作使用时间基本是同样的,第一种方式有时可能会更快,可是当数据量非常大时,另外一种方式会远远大于第一种的分配方式。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155801.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【安装填坑】—- ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory:

    【安装填坑】—- ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory:用anaconda安装python开发环境的时候,使用pip安装某些包,会弹出如下这种提示ERROR:CouldnotinstallpackagesduetoanOSError:[Errno2]Nosuchfileordirectory:’d:\users\xxxx\appdata\local\continuum\anaconda3\envs\faiss\lib\site-packages\numpy-1.20.3.dist-info\METADATA’除了要修改注册表

    2022年6月24日
    97
  • idea在线激活码(破解版激活)

    idea在线激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    52
  • ORACLE存储过程的分支语法(IF语句)

    ORACLE存储过程的分支语法(IF语句)基本语法1.if条件then语句1;语句2;endif;2.if条件then语句序列1;esle语句序列;endif;3.if条件then语句;elsif语句then语句;else语句;endif;…

    2022年7月17日
    14
  • C++和Java怎么选择,哪个好找工作?

    C++和Java怎么选择,哪个好找工作?Java和C++各有各的优势,至于选择什么方向要看你的兴趣爱好,只要你基础扎实我相信找工作都不难,而且语言都是相通的。从两者语言入门来说:Java入门相对简单,C++入门相对难,精通更难! 从学习侧重来说:Java侧重于企业级应用开发,C++则注重底层应用开发。 从就业来说:C++前期工资要高,工作机会少。Java招聘多,工作机会多。 从前景来说:Java、C++长期在编程排行榜前几位,所以学习哪个都可以。 从未来来说:无论你学习Java还是学习C++,只要有多年的经验,工资都会高,不过在工作期

    2022年7月7日
    20
  • WPF: RoutedEvent

    WPF: RoutedEvent

    2021年8月4日
    48
  • 12.推荐几款好用的搜索引擎「建议收藏」

    12.推荐几款好用的搜索引擎「建议收藏」1.多吉搜索https://www.dogedoge.com/多吉搜索是我接触的第一款无广告,无跟踪的搜索引擎,网上有它和谷歌搜索的对比,个人认为非常好用,但是最近好像用不了,总显示502badgateway,估计是被人攻击了。。。2.goobehttps://goobe.io/专为程序员设计的搜索引擎(搜索非技术相关的东西也很6),界面是这样事儿的而且可以通过快照访问stackoverflow和github,非常好用无广告,不跟踪3.萌搜http..

    2022年5月23日
    69

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号