【发布时间】:2011-02-02 03:09:42
【问题描述】:
我在内存有限且没有交换文件之类的功能的 Android 中工作。我读到人们已经在他们的应用程序中使用内存映射文件实现了类似交换文件的功能,但我不明白这是如何工作的。有人知道吗?
我认为一般的想法是,如果我的程序想要使用一个大小为 20Mb 的 int 数组,我可以在 20Mb 文件中为该数组创建数据,然后使用内存映射文件功能透明将我当前需要读取和写入的文件部分带入内存。关键因素是,虽然我有 20Mb 的空间可以读取/写入,但每次只有一小部分在内存中(Android 应用程序的内存限制为 ~24Mb)。
我更愿意为此使用 Java,但 C 解决方案也可以。
编辑:这里提到了这个内存映射文件技巧,但我不明白它是如何工作的 http://grammerjack.blogspot.com/2009/10/gles-quake-port-of-quake-to-android.html
【问题讨论】:
-
不是交换文件映射的内存吗?
-
Android 没有配置交换。由于应用程序的工作方式,操作系统可以在内存不足时杀死任何不在前台的东西。内存映射文件最适合只读数据(可以单独丢弃页面),但您也可以进行共享读/写以获得类似交换的行为。
标签: java android c java-native-interface android-ndk