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

标签 java android c java-native-interface 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

最佳答案

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

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

关于java - 使用内存映射文件作为交换文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4870420/

相关文章:

android - 是否可以使用 HSM 保护 Android KeyChain?

c - 在推出自己的结构时提供辅助功能

c - 结构 vector c

android - 如何在android中以编程方式阅读电子邮件?

c - 如何初始化可变大小的对象

java - 使用 jsoup 提取 `th` header 显示特定值的表

类型为 String 或 List<String> 时的 Java JSON 反序列化

java - 使用括号的通用转换

java - GWT 2.6.1 编译时出现数字转换错误

javascript - 如何使用 Rhino 在 javascript 函数中从 Java HashMap 获取值