我的 Android 应用程序有一个非常奇怪的内存问题。我的应用程序使用以下 3 个类:
public class RGB
{
public int R;
public int G;
public int B;
}
public class CMYK
{
public int C;
public int M;
public int Y;
public int K;
}
public class COLOR
{
public String id;
public CMYK cmyk = new CMYK();
public RGB rgb = new RGB();
public COLOR(String id, int c, int m, int y, int k, int r, int g, int b)
{
this.id = id;
this.cmyk.C = c;
this.cmyk.M = m;
this.cmyk.Y = y;
this.cmyk.K = k;
this.rgb.R = r;
this.rgb.G = g;
this.rgb.B = b;
}
}
然后在代码中,我必须从文件中加载 2000 种颜色(文件长约 65K,正好有 2000 条记录)并放在 assets 文件夹中
public COLOR[] color_list = new COLOR[2000];
...
...
do
{
s = reader.readLine();
if (s != null)
{
String[] x = s.split(" ");
COLOR c = new COLOR(x[0], Integer.parseInt(x[1]), Integer.parseInt(x[2]), Integer.parseInt(x[3]), Integer.parseInt(x[4]), Integer.parseInt(x[5]), Integer.parseInt(x[6]), Integer.parseInt(x[7]));
color_list[j++] = c;
}
} while (s != null);
在此之后,应用程序将崩溃并停止工作。如果我删除 do..while 一切正常,所以我认为我的阵列会越来越多,然后 65K,我做错了什么?在 Android LogCat 上,我已经达到了完整的 HEAP 空间(26MB)!!!
最好的问候 GMG