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 |