私たちはJava 5を実行している長時間実行されているサーバーアプリケーションを持っており、それをプロファイリングすることで、古い世代が徐々に成長しているのがわかります。完全なGCで正しく解放されましたが、ヒープダンプを使用してEclipse MATの到達不能オブジェクトを調べることができるようにしたいと考えています。 + XX:HeapDumpOnCtrlBreakを使用してヒープダンプを取得しましたが、ヒープをダンプする前にJVMは常にGCを実行します。どうやらこれはJava 6では発生しませんが、現在は5に固執しています。これを防ぐ方法はありますか?最初にガベージ・コレクションを行わずにJava 5でヒープ・ダンプを取ることはできますか?
答えて
YourKitのような第三者プロファイラをお勧めします.GCを最初に開始することなくスナップショットを撮ることができます。追加ボーナス、あなたはctrl-break shenanigans全体なしでスナップショットを取ることができます。
jProfiler(ej-technologies)がこれを行うことができます。
私はプログラム的にJMXを介して、ヒープ・ダンプを取ることができ、ここでいくつかのコードを持っている:
ソースコード内のコメントは、ヒープを取る方法についての有用な情報を含ま記事への2つのリンクが含まれていますダンプ。私は確かに分かりませんが、運が良ければ、おそらくJMXのアプローチはGCを回避する何らかの方法を持っています。お役に立てれば !
すごく、ありがとう、私は見て、あらかじめGCかどうかを見てみましょう。プログラムでそれを行うことができることは、実際には非常に便利だと思われます。 – Colin
JDKに同梱の標準jmapツールを試しましたか? jmapの通行料が正式のJava 5で
を導入した例コマンドライン: /ジャワ/ binに/ jmapの-heap:フォーマット= B
結果は標準jhatツールまたはGUIアプリケーションで処理することができますMATなど。
jconsoleまたはvisualvmまたはjmcまたは他のjmx管理コンソールを使用します。 com.sun.managementのHotSpotDiagnosticを開きます。 選択方法dumpHeapと入力2つのパラメータ:
- パスダンプ・ファイルへ
- (真/偽)が唯一のライブオブジェクトをダンプします。
false
を使用してすべてのオブジェクトをダンプします。
ダンプファイルは、JVisualVMではなく、接続したJVMによって書き込まれるため、JVMが別のシステムで実行されている場合、そのシステムに書き込まれます。
- 1. OSはJavaプロセスをガベージ・コレクションから停止できますか?
- 2. .each()を使わずにこのコレクションをレンダリングできますか?
- 3. Javaヒープ・ダンプ・エラー - メタデータがポリモフィックでないと思われる
- 4. 完全なhprofファイルをロードせずに大きなJavaヒープ・ダンプを分析するツールはありますか?
- 5. ヒープ・ダンプを生成するJava JRE7
- 6. Java AutoValueでコレクションに値を追加することはできますか?
- 7. Node.js/npmを使わずにAngular 5 Webアプリケーションを作成することはできますか?
- 8. PHPでパラメータ式をダンプすることはできますか?
- 9. JavaでFrameを使わずにペイントすることは可能ですか?
- 10. このコードを最小ヒープから最大ヒープに変更するには
- 11. 中クリックを使わずにスムーズにスクロールすることはできますか?
- 12. load()を使わずに同じことができますか?
- 13. AWSのラムダタスクで弾性ダンプを実行することはできますか?
- 14. Perlスカラーの最初の5行だけをどのように保つことができますか?
- 15. Djangoフォームを使わずにフォームをビルドすることはできますか?
- 16. gradleを使わずにAndroidアプリをバージョンアップすることはできますか?
- 17. Pythonでmysqldumpを使わずにMySQLデータベースをダンプする方法
- 18. google-services.jsonを使わずにFirebaseを初期化することはできますか?
- 19. Xcode with swift:最初のビューアーをリセットせずに別のビューコントローラーに表示することはできますか?
- 20. Script_scoreを使わずにElasticSearchでこのソートを実行できますか?
- 21. C#またはJavaを最初に学ぶべきですか?
- 22. Javaでは、時間の経過後に要素を取ることができるコレクションがありますか?
- 23. session_start()を使わずにconnect()することはできますか?
- 24. getアクセサにコレクションをロックすることはできますか?
- 25. コレクションをNeo4jのプロパティにすることはできますか?
- 26. javascriptを使わずにドロップダウンリンクでナビゲーションバーを実行することはできますか?
- 27. 'heroku run console'を使わずにHeroku上でRailsコマンドを実行することはできますか?
- 28. RDDから最小値のコレクションを取得したいが、最小値はmutipleです。これをどのように行うことができますか?
- 29. 4000行のテキストファイル内のシンボルを置き換えようとすると、Javaでわずか500に終わる
- 30. Java:TCPソケット、サーバーが最初に要求を行うことはできますか?この図に続き
おかげで、私は実際にJProfilerをのコピーを持っているが、私はそれがこれを行うことが実現しませんでした。私はそれを行ってあげるよ。 – Colin