我在 Android 中工作,那里的内存有限并且没有交换文件之类的功能。我读到有人在他们的应用程序中使用内存映射文件实现了交换文件之类的功能,但我不明白这是如何工作的。有人知道吗?
我认为一般的想法是,如果我的程序想要使用一个大小为 20Mb 的 int 数组,我可以在一个 20Mb 的文件中为这个数组创建数据,然后使用内存映射文件功能来透明地将我当前需要读取和写入的文件部分带入内存。关键因素是,虽然我有 20Mb 的空间可以读/写,但一次只有一小部分在内存中(Android 应用程序的内存限制为 ~24Mb)。
我更愿意为此使用 Java,但 C 解决方案也可以。
编辑:这里提到了这个内存映射文件技巧,但我不明白它是如何工作的http://grammerjack.blogspot.com/2009/10/gles-quake-port-of-quake-to-android.html
最佳答案
在 Java 中,使用 java.nio.MappedByteBuffer。
在 C 中,使用 POSIX 函数 mmap()。它在 Android 上运行良好。
关于java - 使用内存映射文件作为交换文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4870420/