在Android下取消映射或"释放"MappedByteBuffer

Kar*_*ell 11 java android memory-management mmap android-ndk

Java中的常见问题是您必须破解以正确取消内存映射文件的映射 - 请参阅此处查看14年的错误报告;)

但在Android上,纯Java中似乎有0个解决方案,而且仅通过NDK.这是真的?如果是,那么指向使用Android/Java绑定的开源解决方案的任何指针?

Ido*_*veh 0

来自Android 开发者网站:

直接字节缓冲区,其内容是文件的内存映射区域。

映射的字节缓冲区是通过 FileChannel.map 方法创建的。此类使用特定于内存映射文件区域的操作扩展了 ByteBuffer 类。

映射的字节缓冲区及其表示的文件映射保持有效,直到缓冲区本身被垃圾收集为止。

映射字节缓冲区的内容可以随时更改,例如,如果映射文件的相应区域的内容被该程序或其他程序更改。此类更改是否发生以及何时发生取决于操作系统,因此未指定。

至于我从本文中了解到的是,无法MappedByteBuffer使用 Android Java SDK 取消映射。就像你说的,只使用 NDK。