2011-06-20 19 views
2

Javaアプリケーションは、JNI呼び出しを使用してC++コードを呼び出します。私はC++コードでメモリリークのプログラムをチェックしたいと思います。 jconsoleのようなツールは、Javaオブジェクトのヒープを解析するためのものです。私に何ができる?Javaプロセス内のC++オブジェクトによるメモリの増加の分析

+0

コンパイラとOSは何ですか? –

+0

Windows Server 2003. C++コードはビジュアルスタジオプログラムです。 –

+0

一般的にC++コードやヒープ内のJNIオブジェクトのメモリリークについて質問していますか? – Eric

答えて

0

ネイティブヒープデバッグツールが必要です。プラットフォームやネイティブコンポーネントに使用されたコンパイラによっては、多くのものがあります。

1

Windows用のお気に入りのヒープリーク検出ツールは、umdh.exeです。ただし、JVMが使用するどのようなネイティブフォームでも、現在のJava GCヒープメモリーフットプリントが表示されます。

C++コードに対応するメモリは、(UMDH命令に従ってシンボルが適切に設定されていれば)呼び出しスタックがC++コードと一致するため、識別できるはずです。したがって、Javaコードを共存させると、水が濁ることになりますが、C++ /ネイティブメモリの使用状況を追跡することは不可能ではありません。

+0

JNIアプリケーションの使い方を教えてください。 java.exe自体でツールを実行しますか? –

+0

私が理解していることは、あなたが呼び出すC++コードは 'java.exe'内の同じプロセスで実行されることです。この場合、ヒープの使用状況はこのように追跡できます。あなたが運が良ければ、JVMはGCメモリを管理するために別のネイティブヒープを使用し、C++の使用法を簡単に識別します。 –

関連する問題