直接内存(Direct Memory)并不是虚拟机运行时数据区的一部分,也不是Java
虚拟机规范中定义的内存区域,但是这部分内存也被频繁地使用,而且也可能导致
OutOfMemoryError 异常出现。
在JDK 1.4 中新加入了NIO(New Input/Output)类,引入了一种基于通道(Channel)
与缓冲区(Buffer)的I/O 方式,它可以使用Native 函数库直接分配堆外内存,然
后通过一个存储在Java 堆里面的DirectByteBuffer 对象作为这块内存的引用进行
操作。这样能在一些场景中显著提高性能,因为避免了在Java 堆和Native 堆中来
回复制数据。