2011年7月24日日曜日

JMX接続を自作する、その2

前回の記事の対象のプロセスにアクセスする方法ですがいくつかあります。

1:操作するプログラムが対象プロセス自身の場合
2:ローカルで動作しているプロセスでプロセスIDをつかってJMX接続する。
3:リモートで動作しているプロセスでJMXアドレスをつかって接続する。(IDやパスワードがあってもOK)
の3つでしょうか。

今回は1の場合について書いてみます。
1の場合はManagementFactoryからデータを引き出すことができます。

// MBeanServerConnectionを取得
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName objectName = new ObjectName("java.lang:type=Memory");
MemoryMXBean proxy =
       JMX.newMXBeanProxy(mBeanServer, objectName, MemoryMXBean.class);
System.out.println(proxy.getHeapMemoryUsage());

結果は
init = 0(0K) used = 21876328(21363K) committed = 85000192(83008K) max = 129957888(126912K)

前回の記事で書いた
・java.langに設定されているManagementFactoryから取得できるメモリー状態、CPU状態等のシステムBean
このデータに関してはよけいなことしなくても簡単に引き出せます。
MemoryMXBean mbean = ManagementFactory.getMemoryMXBean();
System.out.println(mbean.getHeapMemoryUsage());

結果は同じく
init = 0(0K) used = 21876328(21363K) committed = 85000192(83008K) max = 129957888(126912K)

とこんな感じです。

0 件のコメント:

コメントを投稿