我无法在android中创建像素值超过(100,100,3)的3D数组。然而,它正好适用于上面提到的数组文件。
我的代码:
double mat[][][] = new double[400][400][3];
Error:java.lang.OutOfMemoryError: OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stack available
然而,
double mat[][][] = new double[100][100][3];
工作正常。我正在使用模拟虚拟机来运行Android应用程序。
答案 0 :(得分:3)
这可能是记忆。在Android double
中需要64位,即8个字节。
您正在创建一个400x400x3的3D阵列,因此大小将为
400 * 400 * 3 * 8 = 3.7MB
虽然较小的尺寸将是
100 * 100 * 3 * 8 = 234KB
更有可能获得234KB的块大小而不是3.7MB。
Tnx to Luca comment。