いくつかのリクエストを処理した後、Eclipse が processWorkerExit() メソッドで壊れ始めました。
このリンクに従って、日食の中断を抑制する方法を知っていますが、この行でコードが中断する理由はありますか。このような場合にメモリリークが発生する可能性はありますか?
トムキャット 7.0.27
エクリプス 3.7.2
JDK 7.0.02
いくつかのリクエストを処理した後、Eclipse が processWorkerExit() メソッドで壊れ始めました。
このリンクに従って、日食の中断を抑制する方法を知っていますが、この行でコードが中断する理由はありますか。このような場合にメモリリークが発生する可能性はありますか?
トムキャット 7.0.27
エクリプス 3.7.2
JDK 7.0.02
デバッガーがその行で停止する理由は、try{}
ブロック内のコードによってスローされる例外があり、そのコードの特定の行が、例外がスローされた後の次の実行可能なコード行であるためです。コンソール ウィンドウでその例外のスタック トレースをほぼ確実に確認できThread.run()
ますstderr
。
メモリ リークが発生する可能性があるかどうか (または、Java のリソース リークである可能性が高い) についての質問については、答えは「はい」です。発生する可能性があります。しかし、そのコードには、 があることを示すものは何もありません。task
このようなリークがあった場合、ほぼ間違いなく、実装内で正しくない例外処理が行われていることが原因です。
私はこれと同じ問題を抱えていました。例外をログに記録しない場合、try/catch 句がある場合は壊れます。次のように、ブレークポイントまたは出力を LogCat に挿入してみてください。
try
{
//HERE I'VE PUT ALL THE FUNCTIONS THAT WORK FOR ME
Log.e("tag", "Sth passed!");
}
catch (Exception e)
{
//The task failed
Log.e("tag", e.getMessage());
}
try/catch ブロックがない場合は、上記のコードのように配置します。LogCat では、例外の前に実行されたコードの最後の行を確認できます。これは、次のようにコード内のエラーを見つけるのに役立ちます。
08-28 05:49:52.321: E/SQLiteDatabase(834): java.lang.Thread.run (Thread.java:841) で