11.18

作者: 迷人的酋长 | 来源:发表于2017-11-21 22:14 被阅读0次
    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 一样使用新映射的缓冲区,操作系统会在需要时负责执行映射。

    相关文章

      网友评论

          本文标题:11.18

          本文链接:https://www.haomeiwen.com/subject/szjgvxtx.html