可以扩展通过 allocateDirect 方法创建的 ByteBuffer 吗?

Posted

技术标签:

【中文标题】可以扩展通过 allocateDirect 方法创建的 ByteBuffer 吗?【英文标题】:It is possible to expand a ByteBuffer created through the allocateDirect method? 【发布时间】:2020-01-28 13:31:20 【问题描述】:

有没有办法在堆外 ByteBuffer 创建后增加分配的内存?

【问题讨论】:

【参考方案1】:

也可以通过将文件的区域直接映射到内存来创建直接字节缓冲区。 Java 平台的实现 可以选择支持从本机代码通过 JNI 创建直接字节缓冲区。如果其中一种缓冲区的实例引用了不可访问的内存区域,则访问该区域的尝试不会更改缓冲区的内容,并且会在访问时或稍后引发未指定的异常时间。

API 没有规定,但可能有一个 JVM 通过 JNI 允许它。 我会说

【讨论】:

以上是关于可以扩展通过 allocateDirect 方法创建的 ByteBuffer 吗?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 ByteBuffer.allocate() 和 ByteBuffer.allocateDirect() 之间的奇怪性能曲线差异

使用扩展语法创建一系列自然数

java nio通过ByteBuffer输出文件信息

DirectByteBuffer实现原理分析

是否存在允许动态增长和扩展 java.nio.ByteBuffer 的 ByteBuffer 实现?

NIO直接缓冲区和非直接缓冲区