2

mvn assembly:assemblyプロファイリングしようとしている(でコンパイルされた) JAR 内にクラスがある場合、jhat または Eclipse メモリ アナライザーで使用できる有効なコア ダンプを取得するコマンドは何ですか?

これを実行してみました:

java -agentlib:hprof=heap=sites,cpu=samples,file=profile.hprof,format=b -jar the-jar.jar

プロセスを停止すると、コア ダンプが作成されます。

しかし、jhat も Eclipse メモリ アナライザーも、これを有効なダンプとして認識しません。

jhatは私にこの警告を与えます:

Resolving 0 objects...
WARNING:  hprof file does not include java.lang.Class!
WARNING:  hprof file does not include java.lang.String!
WARNING:  hprof file does not include java.lang.ClassLoader!

また、hprof のドキュメントを読むと、クラス名を渡す必要があることがわかります。JAR内にある場合、どうすればよいですか?

4

1 に答える 1

2

クラスが JAR ファイルからロードされたという事実は、ヒープ ダンプには関係ありません。

jmapstart コマンドを変更せずに、使用可能な HPROF ヒープ ダンプを取得するために使用できます。

jmap -heap:format=b <pid>

jpsは、コマンド ライン ユーティリティで取得できるプロセス ID です。どちらの実行可能ファイルも JDK の一部です。

于 2012-11-05T17:23:42.753 に答える