`

直接缓冲区

 
阅读更多

原创转载请注明出处:http://agilestyle.iteye.com/blog/2360210

 

直接缓冲区( ByteBuffer.allocateDirect() )

(1)通道只接收  ByteBuffer 作为参数

(2) 操作系统的在内存区域中进行 I/O 操作。就操作系统方面而言, 这些内存区域是相连的字节序列 。于是, 只有字节缓冲区有资格参与I/O 操作 。操作系统会直接存取 JVM 进程的内存空间,以传输数据。这意味着 I/O 操作的目标内存区域必须是连续的字节序列。 在 JVM 中,字节数组可能不会在内存中连续存储 ,或者无用存储单元收集可能随时对其进行移动。在 Java 中, 数组是对象,而数据存储在对象中的方式在不同的JVM 实现中都各有不同。

引入了直接缓冲区的概念。 直接缓冲区被用于与通道和固有 I/O 例程交互。

(3)直接缓冲区是I/O 的最佳选择,但可能比创建非直接缓冲区要花费更高的成本。直接缓冲区使用的内存是通过调用本地操作系统方面的代码分配的,绕过了标准 JVM 堆栈。 建立和销毁直接缓冲区会明显比具有堆栈的缓冲区更加破费, 这取决于主操作系统以及 JVM 实现。 直接缓冲区的内存区域不受无用存储单元收集支配,因为它们位于标准JVM堆栈之外。

 

直接缓冲区是通过调用具有所需容量的  ByteBuffer.allocateDirect() 函数产生的, 注意用一个 wrap()函数所创建的被包装的缓冲区总是非直接的。

 

Reference

http://www.tuicool.com/articles/mINJve

分享到:
评论

相关推荐

    Java中的缓冲区(直接缓冲区、非直接缓冲区等).docx

    Java中的缓冲区(直接缓冲区、非直接缓冲区等).docx

    线缓冲区生成算法

    使用java代码编写的线缓冲区生成算法,下载工程,导入Eclipse直接可用,采用的缓冲区生成算法为平行双线法

    java生成线缓冲区的代码

    使用java写的线的缓冲区代码,使用eclipse直接打开就可以使用,这里返回的是经纬度的坐标串,修改传入坐标,直接可以得到线缓冲区的的坐标串,然后再可视化即可。

    arcgis api for js 缓冲区分析

    arcgis api for js 缓冲区分析。可以直接运行,可以实现,初学者可以下载看看

    GIS原型系统的缓冲区分析算法讲解 可以直接拷贝运行

    GIS原型系统的缓冲区分析算法讲解 可以直接拷贝运行

    Java NIO(通道+缓冲区+选择器)

    Java NIO通道:通道基础、文件通道、Socket通道、工具类 Java NIO缓冲区:基础、缓冲区(Buffer)、创建缓冲区、直接缓冲区(DirectByteBuffer) Java NIO选择器:核心概念、选择器使用、Demo、选择器深入、

    尚硅谷Java视频_NIO 视频教程

    尚硅谷_NIO_直接缓冲区与非直接缓冲区 ·04. 尚硅谷_NIO_通道(Channel)的原理与获取 ·05. 尚硅谷_NIO_通道的数据传输与内存映射文件 ·06. 尚硅谷_NIO_分散读取与聚集写入 ·07. 尚硅谷_NIO_字符集 Charset ·08. ...

    DirectSound有一个缓冲区对象IDirectSoundBuffer

    而副缓冲区中存放着许多单独的声音信号,有的可以直接播放,有的要混音,有的循环播放。主缓冲区由DirectSound自动创建,而副缓冲区需由应用程序来创建。DirectSound将副缓冲区中的声音混合后,存入主缓冲区,再输出...

    高速通信下环形缓冲区设计及实现

    1.高速通信下,环形缓冲区设计及实现;可直接使用演示。 2.包括:服务端和客户端。说明:SOCKET通信非常简略,只为环形缓冲区测试使用,也适合初学都学习。 其他:里面包含SOCKET通信客户端/服务器演示,还包括了...

    UI之高仿优酷效果

    UI之高仿优酷效果,已经测试,请放心使用,在android2.3下即可运行

    Java NIO实战开发多人聊天室

    01-Java NIO-课程简介.mp4 05-Java NIO-Channel-FileChannel详解(一).mp4 ...19-Java NIO-Buffer-直接缓冲区.mp4 21-Java NIO-Selector-概述.mp4 23-Java NIO-Selector-示例代码(客户端).mp4 24

    新输入输出(NIO)

    JDK 1.4 中引入的新输入输出 (NIO) 库在标准 Java 代码中提供了高速的、面向块的 I/O。本实用教程从高级概念到底层的编程细节,非常详细地介绍了 ...您还将了解只能通过 NIO 来完成的工作,如异步 I/O 和直接缓冲区。

    新输入输出NIO

    JDK 1.4 中引入的新输入输出 (NIO) 库在标准 Java 代码中提供了高速的、面向块的 I/O。本实用教程从高级概念到底层的编程细节,非常详细地介绍了 ...您还将了解只能通过 NIO 来完成的工作,如异步 I/O 和直接缓冲区。

    NIO入门学习

    NIO 入门 JDK 1.4 中引入的新输入输出 (NIO) 库在标准 Java 代码中提供了高速的、面向块的 I/O。本实用教程从高级概念到底层的编程细节,非常详细地...您还将了解只能通过 NIO 来完成的工作,如异步 I/O 和直接缓冲区。

    c语言:并行FLASH数据缓冲区的管理

    并行FLASh数据缓冲区的管理 * 对于并行FLASh芯片的存取操作,内核能够通过直接对芯片的读写来实现,但是较慢的芯片响应速度会使用系统响应时间加长,吞吐率降低。因此,内核通过保持一个称为数据缓冲区高速缓冲的...

    Q版缓冲区溢出教程-场景教程

    1.2 啤酒和杯子――缓冲区溢出原理 8 1.3 神秘的Windows系统 10 1.4 ShellCode编写简介 17 1.5 窥豹一斑――本地缓冲区溢出简单利用 21 1.6 小结——摘自小强的日记 28 1.7 首次实战――FoxMail溢出漏洞编写 29 1.8 ...

    Java〖NIO上篇〗看这一篇就够了 缓冲区 通道

    缓冲区2.1 直接缓冲区与非直接缓冲区三. 通道3.1 java针对支持通道的类提供了getChannel()方法FileInputStream/FileOutputStreamRandomAccessFile3.2 在JDK 1.7 中的NIO.2 针对各个通道提供了静态方法 open()3.3 在...

    Arcgis中的点、线、面缓冲区生成和叠加分析

    需要点、线、面生成缓冲区的又不要附加库依赖库,点、线、面处在不同的代码文件中,方便移植,不需要依赖库又要移植点、线、面缓冲区生成的最好代码;可直接运行~!

    Labview实现串口通信与CRC校验并解析缓冲区数据

    Labview2014实现串口通信,并对输入的字符串进行CRC校验,可直接用于测试modbus485协议,并且程序对串口缓冲区数据进行了解析。

    串行FLASH数据缓冲区的管理

    因此,内核通过保持一个称为数据缓冲区高速缓冲的内部数据缓冲区来减小对芯片的存取频度。高速缓冲含有最近被使用过的串行Flash的数据。 当从芯片中读数据的时候,内核试图先从高速缓冲中读取。如果数据已经在该高速...

Global site tag (gtag.js) - Google Analytics