読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

ローカルのJavaVM一覧を表示するツールを作ってみた。

Java

ローカルのJavaVM一覧を表示するツールを作ってみた。

  • jvmstatのAPIを呼び出して情報を取得し表示します。
    • なので、実行時にtools.jarをクラスパスに通す必要があります。
    • 属性はとりあえず全部表示するようにしてみた。
import java.net.URISyntaxException;
import java.util.List;
import java.util.Set;

import sun.jvmstat.monitor.HostIdentifier;
import sun.jvmstat.monitor.Monitor;
import sun.jvmstat.monitor.MonitorException;
import sun.jvmstat.monitor.MonitoredHost;
import sun.jvmstat.monitor.MonitoredVm;
import sun.jvmstat.monitor.VmIdentifier;

/**
 * ローカルのJavaVM一覧を表示する。 <br/>
 * ※tools.jarが必要なのでパスに通して使うこと!
 * 
 * <pre>
 * 例) java -cp tools.jar JVMList
 * </pre>
 */
public class JVMList {
    
    public static void main( String[] args ) throws MonitorException, URISyntaxException {
        
        MonitoredHost monitoredHost =
            MonitoredHost.getMonitoredHost(new HostIdentifier((String)null));
        
        for ( Integer vmid : (Set<Integer>)monitoredHost.activeVms() ) {
            MonitoredVm vm = null;
            String vmidString = "//" + vmid + "?mode=r";
            
            VmIdentifier id = new VmIdentifier(vmidString);
            try {
                vm = monitoredHost.getMonitoredVm(id, 0);
                
                System.out.println( new StringBuilder().append("\n--- pid : ").append(vmid) );
                for ( char i = 'a'; i < 'z'; i++ ) {
                    List<Monitor> list = vm.findByPattern( String.valueOf(i));
                    for ( Monitor m : list ) {
                        System.out.println( new StringBuilder().append("  ").append( m.getName())
                            .append( " = " ).append( String.valueOf(m.getValue())).toString() );
                    }
                }
            } finally {
                if ( vm != null ) {
                    monitoredHost.detach(vm);
                }
            }
        }
    }
}

実行結果です。

--- pid : 1056
  java.ci.totalTime = 178022887
  java.cls.loadedClasses = 469
  java.cls.sharedLoadedClasses = 0
  java.cls.sharedUnloadedClasses = 0
  java.cls.unloadedClasses = 0
  ....

--- pid : 2300
  java.ci.totalTime = 394414503
  java.cls.loadedClasses = 1359
  java.cls.sharedLoadedClasses = 0
  ....