我在Android中从未见过的新错误。有解决方案吗?

时间:2012-02-07 05:56:11

标签: android

02-07 10:49:45.558: E/dalvikvm-gc(7184): Could not create 2617344-byte ashmem mark stack: Too many open files

当我在玩游戏时,一段时间后游戏被强制关闭,显示Log Cat中的上述错误。这有什么解决方案吗?可能是什么原因??

1 个答案:

答案 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块中引发的任何异常。

写入文件往往不是问题,因为程序员通常会小心关闭文件以确保数据到达文件。但是,应该遵循类似的模式:永远不要让异常阻止关闭文件。