根据 (虽然在JavaDoc中没有具体提到),ByteBuffer.allocateDirect在主JVM堆上分配内存。我可以确认,使用Java,看到调用ByteBuffer n = ByteBuffer.allocateDirect(Integer.MAX_VALUE)的程序使用的Java内存不多:但是,当限制例如,当我使用-Xmx1g选项运行JVM时,allocateDirect调用将导致以下异常:Exception in thread "main" java.lang.OutOfMemoryError