使用内存映射文件作为交换文件?

rbc*_*bcc 5 c java java-native-interface android android-ndk

我在Android中工作,内存有限,并且没有类似功能的交换文件.我已经读过人们已经在他们的应用程序中使用内存映射文件实现了交换文件的功能,但我不明白这是如何工作的.有人知道吗?

我认为一般的想法是,如果我的程序想要使用大小为20Mb的int数组,我可以在20Mb文件中为该数组创建数据,然后使用内存映射文件功能透明地将其带入内存我当前需要读取和写入的文件部分.关键因素是,虽然我有20Mb的空间可读/写,但一次只有一小部分内存(Android应用程序仅限于~24Mb的内存).

我更喜欢在Java中工作,但C解决方案也可以.

编辑:这里提到了这个内存映射文件技巧,但我不明白它是如何工作的http://grammerjack.blogspot.com/2009/10/gles-quake-port-of-quake-to-android.html

Sev*_*yev 1

在Java中,使用java.nio.MappedByteBuffer。

在 C 中,使用 POSIX 函数 mmap()。它在 Android 上运行良好。