- 直接内存(Direct Memory)不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。
- 直接内存是在Java堆外的、直接向系统申请的内存区间。
- 在JDK1.4中引入了NIO(JDK1.7引入NIO2),引入了一种基于通道(Channel)与缓冲区(Buffer)的 I/O方式,它可以使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆里面的DirectByteBuffer对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了在Java堆和Native堆中来回复制数据。
package com.coder.java;
import java.nio.ByteBuffer;
import java.util.Scanner;
/**
* IO NIO (New IO / Non-Blocking IO)
* byte[] / char[] Buffer
* Stream Channel
*/
public class BufferTest {
private static final