我在Android中工作,内存有限,并且没有类似功能的交换文件。我已经读过人们已经在他们的应用程序中使用内存映射文件实现了交换文件的功能,但我不明白这是如何工作的。有谁知道吗?
我认为一般的想法是,如果我的程序想要使用大小为20Mb的int数组,我可以在20Mb文件中为该数组创建数据,然后使用内存映射文件功能透明地将当前需要读取和写入的文件部分带入内存。关键因素是,虽然我有20Mb的空间可供读/写,但一次只有一小部分内存(Android应用程序仅限于~24Mb的内存)。
我更喜欢在Java中工作,但C解决方案也可以。
编辑:这里提到了这个内存映射文件技巧,但我不明白它是如何工作的http://grammerjack.blogspot.com/2009/10/gles-quake-port-of-quake-to-android.html
答案 0 :(得分:1)
在Java中,使用java.nio.MappedByteBuffer。
在C中,使用POSIX函数mmap()。它适用于Android。