Java:ByteBuffer allocateDirect分配直接分配超出要求的资源

Java:ByteBuffer allocateDirect分配直接分配超出要求的资源,java,Java,调用时,我使用allocateDirect将我的ByteBuffer设置为直接缓冲区,宽度为984,高度为1312: buffer = ByteBuffer.allocateDirect(mDrawViewport.width * mDrawViewport.height * 4).order(ByteOrder.nativeOrder()); 我想我会得到这个缓冲区的5164032字节,我已经检查了缓冲区的容量和限制,它们是5164032字节,但是当通过调用“buffer.array()”

调用时,我使用allocateDirect将我的ByteBuffer设置为直接缓冲区,宽度为984,高度为1312:

 buffer = ByteBuffer.allocateDirect(mDrawViewport.width * mDrawViewport.height * 4).order(ByteOrder.nativeOrder());
我想我会得到这个缓冲区的5164032字节,我已经检查了缓冲区的容量和限制,它们是5164032字节,但是当通过调用“buffer.array()”获取字节数组并获取其长度时,我得到5164039字节

这里有什么问题


感谢阅读本文。

尝试使用
array()
方法从直接字节缓冲区获取数组将导致
不支持操作异常。如果这对你有效,那就有问题了…@Marco13不一定。文档中说它是否有支持数组还没有确定。@Bubletan我在这里说的是Oracle虚拟机。当使用“不常见”VM时,应更新此问题。您好@huy,您是否能够找到此问题的根本原因?尝试使用
array()
方法从直接字节缓冲区获取数组将导致
不支持操作异常。如果这对你有效,那就有问题了…@Marco13不一定。文档中说它是否有支持数组还没有确定。@Bubletan我在这里说的是Oracle虚拟机。当使用“不常见”虚拟机时,问题应该更新。嗨@huy,你能找到这个问题的根本原因吗?