当前位置: 首页 > news >正文

ByteBuffer的allocate和allocateDirect区别

ByteBuffer的allocate和allocateDirect区别

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

public static ByteBuffer allocate(int capacity)  
public static ByteBuffer allocateDirect(int capacity) 

  为什么要提供两种方式呢?这与Java的内存使用机制有关。

  1. 第一种分配方式产生的内存开销是在JVM中的,
  2. 第二种的分配方式产生的开销在JVM之外,以就是系统级的内存分配。

  当Java程序接收到外部传来的数据时,首先是被系统内存所获取,然后在由系统内存复制拷贝到JVM内存中供Java程序使用。所以在第二种分配方式中,可以省去复制这一步操作,效率上会有所提高。但是系统级内存的分配比起JVM内存的分配要耗时得多,所以并不是任何时候allocateDirect的操作效率都是最高的。下面是一个不同容量情况下两种分配方式的操作时间对比: 

  由图可以看出,当操作数据量很小时,两种分配方式操作使用时间基本是相同的,第一种方式有时可能会更快,但是当数据量很大时,第二种方式会远远大于第一种的分配方式。

 

 

 

来自:  http://blog.sina.com.cn/s/blog_67dc11000101cpsk.html

 

转载于:https://www.cnblogs.com/mjorcen/p/3992264.html

http://www.xdnf.cn/news/820045.html

相关文章:

  • Keil微库 vs 标准C库
  • 42丨深度学习:使用GAN生成手写数字样本
  • RubyOnRails终极部署
  • 开源.net框架的CMS
  • 网页设计零基础教程:快速掌握制作技巧
  • 黑莓手机刷linux,【教程】黑莓手机 BlackBerry DM6.0 完整刷机教程 含瘦身方法...
  • 看懂影片标题,各种电影视频格式标题的含义
  • 语音编程之Speech SDK概述(1)
  • PLSQL专项学习之SYS_CONTEXT
  • 【转】OrCAD 16.3安装和破解方法
  • 第五届管理科学与工程管理国际学术会议 2024 5th International Conference on Management Science and Engineering Manage
  • 电脑桌面图标变大了怎么恢复?5种简单方法帮你恢复正常
  • 不得不知的3个现货白银的基本规则!第3个很多人都忽略了
  • PKI/CA与数字证书学习笔记
  • c语言编程题经典100例
  • SmartUpload组件实现文件上传
  • 数据库是什么
  • 网页三剑客
  • 一步一步指导 车机的备份 掌迅92XX系列固件导出步骤
  • codejock中托盘的实现
  • 一步一步搭建11gR2 rac+dg之安装rac出现问题解决(六)
  • Android 初始化Setup Wizard——Provision
  • 软考 | 2012年上半年 软件设计师 下午试卷
  • 个人博客论坛系统测试报告
  • 高等数学基础篇(数二)之二重积分(解析版)
  • Zero Sum 和为零
  • 【AI】2114- 汇总 11 个 AI 领域的优质飞书知识库,完全免费,赶紧收藏起来!
  • 【高校主办!国际高级别组委加入!EIScopus检索】2024年经济决策与人工智能国际学术会议 (EDAI 2024)
  • 什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?00后的世界我不懂!
  • centos7下升级openssh9.6版本以上远程连接报ssh服务器不能连接错误