java - 大数组 - 内存不足错误

标签 java android arrays out-of-memory ram

我正在为单个特定手机编写 Android 应用程序(只需要在我的个人手机上运行),我需要使用以下大型数组,我想使用它来有效地将 RGB 颜色转换为 HSV:

RainbowTable = new float[256*256*266][3];

这个数组的总大小应该是 256*256*256*3*4B = 201326592B = 192MB。 根据 Android 任务管理器,当我调试该应用程序时,我遇到了一个内存不足异常,尽管在​​执行该应用程序之前仍有大约 300MB RAM 空闲。

我已经在 list 文件中将 large-heap 选项设置为 true

我该怎么做才能避免此错误并保留所需的 RAM 量?

编辑:我的手机已获得 root 权限,因此可能会增加每个应用程序的内存堆大小。

最佳答案

每个设备都有最大的每个应用程序 RAM 上限。如果 list 中的此调用不能缓解您的问题:

android:largeHeap="true"

那么您唯一的选择就是使用 NDK 编写代码。但要深入研究这是一件非常艰巨的事情,所以我会先尝试找出替代方案。

关于java - 大数组 - 内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14405295/

相关文章:

android - 删除 ScrollView 子项的滚动事件

android - NavigationView header 中的 TextView 返回 null

android - 使用ListTile并获取异常:未布局RenderBox

C++ 多线程数组

java - 我正在尝试将查询中的数组参数传递给 servlet。但是,我收到 java.lang.IllegalArgumentException

java - 编写一个 gradle 脚本,将所有依赖项保存到 ${projectDir}/lib 文件夹中

java - 设置日志文件名以在 Log4j 中包含当前日期

java - 在祖 parent 类调用 super 吗?

arrays - Azure 逻辑应用程序将 XML 转换为 JSON,但将对象的一项数组视为一个对象,在解析 JSON 时如何处理它?

java - 如何实例化一个通用集合数组?