ByteBuffer.allocate()和ByteBuffer.allocateDirect

来源:互联网 发布:淘宝图书经营许可共用 编辑:程序博客网 时间:2024/05/03 12:05
allocateDirectpublic static ByteBuffer allocateDirect(int capacity)分配新的直接字节缓冲区。 新缓冲区的位置将为零,其界限将为其容量,其标记是不确定的。无论它是否具有底层实现数组,其标记都是不确定的。 参数:capacity - 新缓冲区的容量,以字节为单位allocatepublic static ByteBuffer allocate(int capacity)分配一个新的字节缓冲区。 新缓冲区的位置将为零,其界限将为其容量,其标记是不确定的。它将具有一个底层实现数组,且其 数组偏移量将为零。 参数:capacity - 新缓冲区的容量,以字节为单位 allocate和allocateDirect方法都做了相同的工作,不同的是allocateDirect方法直接使用操作系统来分配Buffer。因而它将提供更快的访问速度。不幸的是,并非所有的虚拟机都支持这种直接分配的方法。Sun推荐将以字节为单位的直接型缓冲区allocateDirect用于与大型文件相关并具有较长生命周期的缓冲区。