02-07 10:49:45.558: E/dalvikvm-gc(7184): Could not create 2617344-byte ashmem mark stack: Too many open files
当我在玩游戏时,一段时间后游戏被强制关闭,显示Log Cat中的上述错误。这有什么解决方案吗?可能是什么原因??
答案 0 :(得分:2)
原因是您的代码没有关闭文件,系统的文件句柄用完了。您应始终使用编码模式来使用文件,以确保在不再需要时关闭所有流。这是一个典型的模式:
InputStream is = null;
try {
is = new FileInputStream(myFile);
// read stuff from is
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
Log.w(LOG_TAG, "Exception raised when closing file", e);
}
}
}
外部try
也可以有catch
子句。 try/catch
子句中finally
的原因是为了防止关闭文件时出现异常,从而抑制外部try
块中引发的任何异常。
写入文件往往不是问题,因为程序员通常会小心关闭文件以确保数据到达文件。但是,应该遵循类似的模式:永远不要让异常阻止关闭文件。