0
02-07 10:49:45.558: E/dalvikvm-gc(7184): Could not create 2617344-byte ashmem mark stack: Too many open files
當我玩遊戲時,經過一段時間遊戲強制關閉,在Log Cat中顯示上述錯誤。有沒有解決方案?可能是什麼原因?我在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中顯示上述錯誤。有沒有解決方案?可能是什麼原因?我在Android中從未見過的新錯誤。有沒有解決方案?
原因是您的代碼沒有關閉文件,系統沒有用完文件句柄。您應始終使用使用編碼模式的文件,以確保在不再需要時關閉所有流。下面是一個典型的模式:
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
條款。 finally
子句中try/catch
的原因是爲了防止在關閉文件時發生異常,以阻止在外部try
塊中引發的任何異常。
寫入文件往往不是問題,因爲程序員通常會小心關閉文件以確保數據到達文件。但是,應遵循類似的模式:從不讓異常阻止文件的關閉。
但問題是我沒有在我的代碼中使用任何傳統的文件處理。我使用的是共享首選項。我應該把它們包裝在試穿中嗎? – 2012-02-07 06:06:02
@JawadAmjad - 您是否在使用任何可能打開文件的第三方庫?任何網絡連接?任何數據庫? – 2012-02-07 06:19:13
是的,我正在使用,但不是在崩潰的活動。它發生錯誤的主要遊戲場景我使用MainMenu中的庫。 – 2012-02-07 06:33:51