首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >大型数组-内存不足错误

大型数组-内存不足错误
EN

Stack Overflow用户
提问于 2013-01-19 02:29:31
回答 5查看 1.5K关注 0票数 3

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

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

该数组的总大小为256*256*256*3*4B = 201326592B = 192MB。当我调试这个应用程序时,我得到了一个out of memory exception,但根据安卓任务管理器的说法,在执行它之前,仍然有大约300MB的内存可用。

我已经在清单文件中将large-heap-option设置为true

如何防止此错误并保留所需的RAM容量?

编辑:我的手机是根的,所以可能会增加每个应用程序的内存堆的大小。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-19 02:36:28

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

代码语言:javascript
运行
复制
android:largeHeap="true"

那么您唯一的其他选择就是使用NDK编写您的代码。但这是一件相当沉重的事情,所以我会先试着找出一个替代方案。

票数 2
EN

Stack Overflow用户

发布于 2013-01-19 02:37:28

最大堆大小取决于设备,目前192MB可能超过设备允许的限制。

但是,this answer表示您可以使用NDK来分配更多的内存。

票数 2
EN

Stack Overflow用户

发布于 2013-01-19 02:33:02

如果你已经尝试过这个largeHeap=true,,我怀疑是否有一个有效的解决方案,通常单个内存堆的最大大小可以是24 -48mb,具体取决于设备

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14405295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档