11.18

  1. Java 中,直接缓冲区与非直接缓冲器有什么区别?
    非直接缓冲区:通过allocate()分配缓冲区,将缓冲区建立在JVM的内存中
    直接缓冲区:通过allocateDirect()分配直接缓冲区,将缓冲区建立在物理内存中,可以提高效率。
    BufferedOutputStream与任何一个OutputStream相同,除了用一个另外的flush( ) 方法来保证数据缓冲器被写入到实际的输出设备。因为BufferedOutputStream是通过减小系统写数据的时间而提高性能的,可以调用flush( )方法生成缓冲器中待写的数据。
  2. Java 中的内存映射缓存区是什么?
    1.内存映射文件 I/O 是一种读和写文件数据的方法,它可以比常规的基于流或者基于通道的 I/O 快得多。
    2.内存映射文件 I/O 是通过使文件中的数据神奇般地出现为内存数组的内容来完成的。
    3.内存映射并不真的神奇或者多么不寻常。现代操作系统一般根据需要将文件的部分映射为内存的部分,从而实现文件系统.
    4.内存映射机制不过是在底层操作系统中可以采用这种机制时,提供了对该机制的访问。 尽管创建内存映射文件相当简单,但是向它写入可能是危险的。仅只是改变数组的单个元素这样的简单操作,就可能会直接修改磁盘上的文件。修改数据与将数据保存到磁盘是没有分开的。
    5.将一个FileChannel映射到内存中,将使用 FileChannel.map() 方法。
    map() 方法返回一个 MappedByteBuffer,它是 ByteBuffer 的子类。可以像使用其他任何 ByteBuffer 一样使用新映射的缓冲区,操作系统会在需要时负责执行映射。

推荐阅读更多精彩内容

  • 转自 http://www.ibm.com/developerworks/cn/education/java/j-...
    抓兔子的猫阅读 2,049评论 0 22
  • Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java I...
    JackChen1024阅读 7,273评论 1 142
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 41,226评论 11 349
  • #标题 ##好一
    golao_deng阅读 136评论 0 0
  • 最近刚从旧公司离职,为面试在做准备,因为平时开发CV大法用得比较多,很多基础知识掌握得不是很牢靠以及很多工具框架只...
    黎清海阅读 1,936评论 1 19
  • 翁婿午后公园游 寻遗访贤谈古今 身为人子恩难报 陪侍左右惭愧行 长沙小聚忽忽去 唯有春节再叙情
    刘齐森阅读 388评论 0 5