jmx를 이용하여 해당 jvm instance의 cpu usage를 측정하는 메소드는 다음과 같이 되어 있다.

private void _getJavaRuntime() {
OperatingSystemMXBean osbean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
RuntimeMXBean runbean = (RuntimeMXBean) ManagementFactory.getRuntimeMXBean();

long bfprocesstime = osbean.getProcessCpuTime();
long bfuptime = runbean.getUptime();
long ncpus = osbean.getAvailableProcessors();

for (int i = 0; i < 1000000; ++i) {
ncpus = osbean.getAvailableProcessors();
}

long afprocesstime = osbean.getProcessCpuTime();
long afuptime = runbean.getUptime();

float cal = (afprocesstime - bfprocesstime)
/ ((afuptime - bfuptime) * 10000f);

javacpu = Math.min(99f, cal);
uptime = runbean.getUptime(); 
}

'java core' 카테고리의 다른 글

JDK7에 clossloader의 close 메소드가 생기다니.  (0) 2009.04.09
JMX 에서 standardbean 사용 관련 Tip  (0) 2009.03.28
Java Memory 이야기  (0) 2009.03.25
svn과 연동 (svnkit)  (0) 2009.03.25
exception시 어떻게 되는가?  (0) 2009.03.05
Posted by '김용환'
,