一、概述
- 不是JVM的区域,直接读取的是操作系统的内存。
- 来源于java.nio,通过存在堆中的DirectByteBuffer操作本地内存。
- 访问直接内存的性能通常更高,优于堆内存。
- 因此读写频繁的场景可能会考虑直接内存。
- java的NIO库允许java程序使用直接内存,用于数据缓冲区。
- 可能导致OOM
- OutOfMemoryError: Direct buffer memory
- 直接内存在堆外,不受JVM约束,但系统内存是有限的。
- 缺点
- 分配回收成本高
- 不受JVM内存回收管理
- 设置参数
- MaxDirectMemorySize,默认与堆的最大值一致。