4.オンデマンドアタッチとAttachAPI - jconsoleの仕組み

参考

http://itpro.nikkeibp.co.jp/article/COLUMN/20061208/256374/
櫻庭さんの書かれた記事が役に立った.

オンデマンドアタッチ

起動時に何も指定しなくても,必要なときにjconsoleでJava VMにアタッチできるという機能です。

ふむふむ.
 

AttachAPI

また,パッケージ名がcom.sunではじまっていることからわかるように,標準のAPIではありません。
SunのHotSpot VMにだけ適用できるAPIになっています。

なるほど.
 

jconsoleを起動したときのことを思いだしてください。
1番はじめに起動しているVMの一覧が表示されますね。
このVMの一覧を取得するのにAttach APIを利用しています。

そして,VMにアタッチしたあとに,VMにエージェントを送り込みます。
エージェントにはいろいろな意味があり,使う人によって指すものが異なることもよくあります。
ここでの「エージェント」は,Javaのアプリケーションとは独立して動作するコンポーネント,という意味です。

サンプルを見るとrmiを使ってヒープに状態を通信しているようだった.
jconsoleもこうやってるのか.
AttachAgent.java
AttachSample.java