AndroidのStrictModeがリークされたオブジェクト(アクティビティなど)の違反を検出すると、その時点でヒープダンプを取得できると便利です。しかし、これを行うように設定する明白な方法はありません。誰かがそれを達成するために使用できるいくつかのトリックを知っていますか?死刑が発動される直前に特定のコードを実行するようにシステムを納得させる方法はありますか?私はStrictModeが例外をスローしないと思うので、私はここでは説明のトリックを使用することはできません。Is there a way to have an Android process produce a heap dump on an OutOfMemoryError?Android StrictModeとヒープダンプ
5
A
答えて
7
ない例外を、それが終了する直前にSystem.err
にメッセージを印刷しStrictMode
ありません。だから、...これはハックですが、それは動作しますが、唯一のデバッグを有効にするために起こっていることは、私はそれが罰金の姿構築するよう:)
onCreate()
で
:
//monitor System.err for messages that indicate the process is about to be killed by
//StrictMode and cause a heap dump when one is caught
System.setErr (new HProfDumpingStderrPrintStream (System.err));
と呼ばクラス:
private static class HProfDumpingStderrPrintStream extends PrintStream
{
public HProfDumpingStderrPrintStream (OutputStream destination)
{
super (destination);
}
@Override
public synchronized void println (String str)
{
super.println (str);
if (str.equals ("StrictMode VmPolicy violation with POLICY_DEATH; shutting down."))
{
// StrictMode is about to terminate us... don't let it!
super.println ("Trapped StrictMode shutdown notice: logging heap data");
try {
android.os.Debug.dumpHprofData(app.getDir ("hprof", MODE_WORLD_READABLE) + "/strictmode-death-penalty.hprof");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
(app
は、参照を容易にするために、アプリケーション・コンテキストへの参照を含む外側のクラスの静的フィールドである)
ストリングそれはジンジャーブレッドからジンジャンビーンズまでずっと生き残っていますが、理論的には将来のバージョンで変更される可能性があるので、新しいリリースをチェックしても同じメッセージを使用することを確認する価値があります。
関連する問題
- 1. アイスクリームサンドイッチStrictMode
- 2. StrictModeポリシー違反:StrictModeDiskReadViolation、WriteViolation in Android
- 3. StrictMode AndroidBlockGuardPolicy.onReadFromDisk
- 4. StrictMode before 2.3
- 5. Linuxコアダンプとヒープダンプの比較
- 6. 下位プラットフォーム用のStrictMode
- 7. ヒープダンプ分析 -
- 8. Java Webstartヒープダンプ
- 9. AWS EC2 jmapヒープダンプ
- 10. Android WebViewによってStrictMode違反が発生する
- 11. Websphereのjavacoreとスレッドダンプとヒープダンプの違い
- 12. Yourkit APIヒープダンプ解析
- 13. Javaヒープダンプとシャットダウン - 何の順序?
- 14. StrictModeでMapActivityが動作しない - ヘルプ
- 15. 問題Javaヒープダンプを取る
- 16. ヒープダンプのクラスパス以外のオブジェクト
- 17. Chromium Androidで閲覧中にStrictMode(赤い枠線)を取得しています
- 18. Set-StrictModeはパラメータブロックと互換性がありませんか?
- 19. Androidスタジオでのメモリ割り当ての高いヒープダンプは終了しません
- 20. Androidでヒープダンプを分析するにはどうすればよいですか?
- 21. ヒープダンプ(IBM JDK)を収集する方法
- 22. ヒープダンプを取得する方法を
- 23. ヒープダンプが動作しませんCentOS 7
- 24. Chromeデベロッパーツールでヒープダンプをプロファイリングする(メモリリーク)
- 25. ヒープダンプを視覚化するには?
- 26. コアダンプからのヒープダンプ(hprof)の抽出
- 27. jmapのデフォルトのヒープダンプ形式とは何ですか?
- 28. ヒープ解析後のJavaヒープダンプとヒープサイズが異なる
- 29. カントは、logcatのStrictModeの詳細を参照してください - 抑制StrictModeポリシー違反を画面の回転に
- 30. JDBCでデータを送信する、StrictModeで異常な場合