2010-12-13 1 views
20

JDK 1.6には、実行中のJavaプロセスを検査して操作するためのVisualVMという便利なツールがバンドルされています。 1つの特徴は、ローカルマシン上で実行中のJVMを自動検出することです。ほとんどの場合「(pid xxxx)」と表示されますが、VisualVM自体やNetBeansなどのような名前とアイコンもあります(this dzone articleのスクリーンショットを参照)。VisualVM "<Unknown Application>"に名前を付けるにはどうしたらいいですか?

アプリケーション名とアイコンをJVMに挿入してVisualVMのアプリケーションリストに正しく表示させるにはどうすればよいですか?私のアプリはJRE 1.6を実行している必要がありますか?1.5の下でもこれを行うことはできますか?

+0

ここで私はOpenJDKのLocalVmManagerを見て学びました。$ TMP/hsperfdata_ $ USER /を見て、ローカルVMのリストを見つけました。そこの各ファイルには、VMのPIDの名前が付けられます。コマンドラインに "sun.rt.javaCommand"という文字列が含まれていますが、VisualVMプロセスのファイルに "VisualVM"という文字列が含まれていないため、そのファイルから直接アクセスすることはできません。 –

答えて

26

私は自分の質問の半分をNetBeans forum post答えで解決しました。 -Dvisualvm.display.name=FooBarのJVMコマンドライン引数を追加すると、VisualVMはそのアプリケーションを「FooBar」として表示します。しかし、私はまだアイコンにどのように影響するかを理解できません。

更新:悲しいかな、私はアイコンの答えを見つけたと思う。これらのアイコンはVisualVMソースのMainClassApplicationTypeFactory経由でVisualVMにハードコードされ、静的メソッドApplicationTypeFactory.getApplicationTypeFor(アプリケーション)から呼び出されます。 GlassVMプラグインはGlassFishApplicationTypeFactory.initialize()でこれを行います。新しいタイプのファクトリを登録できるVisualVMプラグインを作成する以外はVisualVMに新しいアイコンを挿入する方法はありません。

+0

ありがとう、クリス。私は金曜日にそれを疑っていました。もう推測ゲームはありません! –

+1

今後の読者へのアドバイス:アプリ名にスペースを入れることはできません。つまり、-Dvisualvm.display.name = Foo Barおよび-Dvisualvm.display.name = "Foo Bar"は機能しません。 –

+0

プラグインを作成して登録するだけで、追跡したいアプリの適切な視覚的表現を持つ必要があります。おそらく、VisualVMによって自動的に検出されるファイルのようなマニフェストはうまくいくでしょう...もしかしたらアプリ独自のアイコンを使っていてもかまいません...何とか – Alex

関連する問題