Javaアプリケーションは、JNI呼び出しを使用してC++コードを呼び出します。私はC++コードでメモリリークのプログラムをチェックしたいと思います。 jconsoleのようなツールは、Javaオブジェクトのヒープを解析するためのものです。私に何ができる?Javaプロセス内のC++オブジェクトによるメモリの増加の分析
答えて
ネイティブヒープデバッグツールが必要です。プラットフォームやネイティブコンポーネントに使用されたコンパイラによっては、多くのものがあります。
Windows用のお気に入りのヒープリーク検出ツールは、umdh.exeです。ただし、JVMが使用するどのようなネイティブフォームでも、現在のJava GCヒープメモリーフットプリントが表示されます。
C++コードに対応するメモリは、(UMDH命令に従ってシンボルが適切に設定されていれば)呼び出しスタックがC++コードと一致するため、識別できるはずです。したがって、Javaコードを共存させると、水が濁ることになりますが、C++ /ネイティブメモリの使用状況を追跡することは不可能ではありません。
JNIアプリケーションの使い方を教えてください。 java.exe自体でツールを実行しますか? –
私が理解していることは、あなたが呼び出すC++コードは 'java.exe'内の同じプロセスで実行されることです。この場合、ヒープの使用状況はこのように追跡できます。あなたが運が良ければ、JVMはGCメモリを管理するために別のネイティブヒープを使用し、C++の使用法を簡単に識別します。 –
- 1. Javaプロセスのスレッドダンプの分析
- 2. Java(TM)Platform SEバイナリによるメモリ使用量の増加
- 3. C++プロセスとJavaプロセス間の共有メモリ
- 4. GDataXMLDocumentメモリの増加
- 5. ヒープサイズの増加によるアンドロイドのメモリ不足のエラー
- 6. 非ブロッキングjoinall()によるgeventの増分プロセス
- 7. メモリ制限の増加による奇妙なエラー
- 8. メモリ使用量の分析
- 9. メモリ問題の分析
- 10. 表形式の傾向分析(増加、減少、傾向なし)
- 11. Console.WriteLine()でのメモリ使用量の増加
- 12. スウィフト無限のメモリの増加
- 13. メモリからのビックエンディアンの読み込みとメモリの増分
- 14. C#:別のプロセスのメモリ内のバイト[]配列を検索
- 15. ゲーム内のスコア増加コントロール
- 16. 増加クローラ内のスレッド数
- 17. VB/C#キーパフォーマンス(メモリ)問題によるオブジェクト
- 18. 仮想メモリ内の2つのプロセス
- 19. Cの主成分分析#
- 20. Javaはどのようにメモリ内のStringオブジェクトを処理しますか?
- 21. Intellijキーボードショートカットの増加エディタタブの分割
- 22. Javaウィンドウの北部分に複数のオブジェクトを追加する
- 23. メモリ内のオブジェクトの.NETセキュリティ
- 24. セットC中のプロセスのメモリ制限
- 25. Mono Continuations - store()の後にメモリが増加し続ける
- 26. 空のRailsアプリケーションで無限にメモリが増加する
- 27. アプリケーションプールのリサイクル時に奇妙なメモリが増加する
- 28. 共有メモリ内のセマフォ、プロセス、インクリメント変数
- 29. C++メモリ内のプログラムサイズ
- 30. 別のプロセス内のメモリからプロセスを実行しますか?
コンパイラとOSは何ですか? –
Windows Server 2003. C++コードはビジュアルスタジオプログラムです。 –
一般的にC++コードやヒープ内のJNIオブジェクトのメモリリークについて質問していますか? – Eric