我正在为一个特定的手机编写一个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容量?
编辑:我的手机是根的,所以可能会增加每个应用程序的内存堆的大小。
发布于 2013-01-19 02:36:28
每个设备都有每个应用程序的最大RAM上限。如果清单中的此调用不能缓解您的问题:
android:largeHeap="true"那么您唯一的其他选择就是使用NDK编写您的代码。但这是一件相当沉重的事情,所以我会先试着找出一个替代方案。
发布于 2013-01-19 02:37:28
最大堆大小取决于设备,目前192MB可能超过设备允许的限制。
但是,this answer表示您可以使用NDK来分配更多的内存。
发布于 2013-01-19 02:33:02
如果你已经尝试过这个largeHeap=true,,我怀疑是否有一个有效的解决方案,通常单个内存堆的最大大小可以是24 -48mb,具体取决于设备
https://stackoverflow.com/questions/14405295
复制相似问题