所以我有一些代码在 Android 中崩溃,我不知道为什么。
while(true)
{
byte[] colorData = new byte[480*800];
colorData = null;
System.out.println("what");
}
它打印出“什么”三遍,然后以“致命信号 11 SIGSEGV”崩溃(如下所示:http: //i.imgur.com/FYAsi2C.png)。它肯定在运行垃圾收集,所以问题似乎不是内存耗尽,但如果我降低数组的大小,崩溃需要更长的时间。
如果我删除 colorData 行,则代码可以正常工作并且不会崩溃。我很困惑。它可能是其他一些代码,但我不明白为什么添加/删除数组声明会导致程序崩溃/不崩溃。
有任何想法吗?
编辑:
因此,当我通过增加字节数组大小来强制程序耗尽内存时,我会遇到内存不足异常。到底是什么导致了这个段错误?