如果我直接使用 访问内存ByteBuffer(etc)
,如果内存使用太大(堆外)会抛出什么样的异常?JVM对它有任何控制权吗?我知道在这种情况下 JVM 无关紧要。请纠正我。
提前致谢
如果我直接使用 访问内存ByteBuffer(etc)
,如果内存使用太大(堆外)会抛出什么样的异常?JVM对它有任何控制权吗?我知道在这种情况下 JVM 无关紧要。请纠正我。
提前致谢
在 Oracle JVM 中,如果您尝试ByteBuffer.allocateDirect()
使用大于可用内存的参数进行调用,您将收到IOException
消息“直接缓冲内存”。如果您没有设置-XX:MaxDirectMemorySize
所需的内存量,也可能会出现此异常。
此外,您可以获得IllegalArgumentException
文档所示的。
一旦你分配了缓冲区,如果你尝试读取缓冲区的末尾,你会得到一个BufferUnderflowException
; 如果你尝试写超过缓冲区的末尾,你会得到BufferOverflowException
. 这些也在文档中。