import org.gridkit.jvmtool.win32.SjkWinHelper; import org.junit.Test; public class SjkWinHelperCheck { @Test public void cpu_by_pid() throws Throwable { try { //SjkWinHelper.main(new String[0]); SjkWinHelper helper = new SjkWinHelper(); long[] buf = new long[2]; int pid = 10048; for(int i = 0; i != 10; ++i) { if (helper.getProcessCpuTimes(pid, buf)) { System.out.println("Proc [" + pid + "] kernel: " + toSec(buf[0]) + " user: " + toSec(buf[1])); } else { System.out.println("Proc [" + pid + "] - no data"); } System.out.println("Proc [" + pid + "] CC " + helper.getProcessCpuCycles(pid)); Thread.sleep(500); } } catch(Throwable e) { e.printStackTrace(); throw e; } } @Test public void cpu_by_tid() throws Throwable { try { //SjkWinHelper.main(new String[0]); SjkWinHelper helper = new SjkWinHelper(); long[] buf = new long[2]; int pid = 3164; for(int i = 0; i != 10; ++i) { if (helper.getThreadCpuTimes(pid, buf)) { System.out.println("Thread [" + pid + "] kernel: " + toSec(buf[0]) + " user: " + toSec(buf[1])); } else { System.out.println("Thread [" + pid + "] - no data"); } System.out.println("Thread [" + pid + "] CC " + helper.getThreadCpuCycles(pid)); Thread.sleep(500); } } catch(Throwable e) { e.printStackTrace(); throw e; } } private String toSec(long us) { return String.format("%f", us * 0.000001d); } @Test public void enum_threads() { SjkWinHelper helper = new SjkWinHelper(); int pid = 10048; int[] threads = helper.enumThreads(pid); System.out.println("PID " + pid + " threads " + threads.length); for(int t : threads) { System.out.println(" " + t); } } }