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. C++プロセスとJavaプロセス間の共有メモリ
- 3. Java(TM)Platform SEバイナリによるメモリ使用量の増加
- 4. GDataXMLDocumentメモリの増加
- 5. ヒープサイズの増加によるアンドロイドのメモリ不足のエラー
- 6. 非ブロッキングjoinall()によるgeventの増分プロセス
- 7. 仮想メモリによるコンテキスト切り替えのオーバーヘッドの増加
- 8. Win32 C++のDrawTextでメモリ使用量が増加する
- 9. メモリ制限の増加による奇妙なエラー
- 10. メモリ問題の分析
- 11. メモリ使用量の分析
- 12. Javaアプリケーション内での外部プロセスの起動 - メモリの考慮
- 13. メモリからのビックエンディアンの読み込みとメモリの増分
- 14. Console.WriteLine()でのメモリ使用量の増加
- 15. 増加ノードのメモリをNPMのpackage.jsonスクリプト
- 16. スウィフト無限のメモリの増加
- 17. Heroku Dynoの合計メモリの増加
- 18. Javaの内部メモリがネイティブメモリトラッキングを増やす理由
- 19. 増分オブジェクト名
- 20. Javaの死後メモリ解析
- 21. C#:別のプロセスのメモリ内のバイト[]配列を検索
- 22. 表形式の傾向分析(増加、減少、傾向なし)
- 23. Visual Studioプロジェクトのメモリiussesを分析するC#
- 24. Java - タイマーが増加するときのオブジェクトの再配置
- 25. プロセスの常駐メモリが増加しますがメジャーページフォルトはありません
- 26. オブジェクトの更新メソッド(Django)内の整数の増分
- 27. 旧世代メモリが増加ThreadLocalの
- 28. VB/C#キーパフォーマンス(メモリ)問題によるオブジェクト
- 29. セットC中のプロセスのメモリ制限
- 30. 仮想メモリ内の2つのプロセス
コンパイラとOSは何ですか? –
Windows Server 2003. C++コードはビジュアルスタジオプログラムです。 –
一般的にC++コードやヒープ内のJNIオブジェクトのメモリリークについて質問していますか? – Eric