从Linux内核理解JAVA的NIO

前言

IO 可以简单分为磁盘 IO网络 IO ,磁盘 IO 相对于网络 IO 速度会快一点,本文主要介绍 磁盘 IO网络 IO 下周写。

JAVA 对 NIO 抽象为 Channel , Channel 又可以分为 FileChannel (磁盘 io)和 SocketChannel (网络 io)。

如果你对 IO 的理解只是停留在 api 层面那是远远不够的,一定要了解 IO 在系统层面是怎么处理的。

本文内容:

  • FileChannel 读写复制文件的用法。
  • ByteBuffer 的介绍
  • jvm 文件进程锁,FileLock
  • HeapByteBuffer ,DirectByteBuffer 和 mmap 谁的速度更快
  • Linux 内核 中的 虚拟内存系统调用文件描述符InodePage Cache缺页异常讲述整个 IO 的过程
  • jvm 堆外的 DirectByteBuffer 的内存怎么回收
  • 阅读更多