一、概述

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