JMX

import java.io.File;
import java.lang.management.ClassLoadingMXBean;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;
import java.lang.management.RuntimeMXBean;
import java.lang.management.ThreadMXBean;

import com.sun.management.OperatingSystemMXBean;

/**
* @co.kr.codein
* @author yonghoon
*
*/
public class UseMxBean
{

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new UseMxBean();
}

/*
* ?????
*/
private void showDisk() {
File root = null;

try {
root = new File("/");

System.out.println("Total Space: " + toMB(root.getTotalSpace()));
System.out.println("Usable Space: " + toMB(root.getUsableSpace()));

/* added by cafe mocha */
System.exit(0);

} catch (Exception e) {
e.printStackTrace();
}

}

/*
* cpu ???
*/
private void showCPU() {
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);

float usage = Math.min(99f, cal);

System.out.println("Calculation: " + cal);
System.out.println("CPU Usage: " + usage);

}

private void showRuntime() {
RuntimeMXBean runbean = (RuntimeMXBean) ManagementFactory
.getRuntimeMXBean();

}

/*
* ??? ???
*/
private void showMemory() {
MemoryMXBean membean = (MemoryMXBean) ManagementFactory
.getMemoryMXBean();

MemoryUsage heap = membean.getHeapMemoryUsage();
System.out.println("Heap Memory: " + heap.toString());

MemoryUsage nonheap = membean.getNonHeapMemoryUsage();
System.out.println("NonHeap Memory: " + nonheap.toString());

}

private void showClassLoading() {
ClassLoadingMXBean classbean = (ClassLoadingMXBean) ManagementFactory
.getClassLoadingMXBean();

System.out.println("TotalLoadedClassCount: "
+ classbean.getTotalLoadedClassCount());
System.out.println("LoadedClassCount: "
+ classbean.getLoadedClassCount());
System.out.println("UnloadedClassCount: "
+ classbean.getUnloadedClassCount());

}

private void showThreadBean() {
ThreadMXBean tbean = (ThreadMXBean) ManagementFactory.getThreadMXBean();

long[] ids = tbean.getAllThreadIds();

System.out.println("Thread Count: " + tbean.getThreadCount());

for (long id : ids) {
System.out.println("Thread CPU Time(" + id + ")"
+ tbean.getThreadCpuTime(id));
System.out.println("Thread User Time(" + id + ")"
+ tbean.getThreadCpuTime(id));
}

}

/**
* OS ??
*/
private void showOSBean() {

OperatingSystemMXBean osbean = (OperatingSystemMXBean) ManagementFactory
.getOperatingSystemMXBean();

System.out.println("OS Name: " + osbean.getName());
System.out.println("OS Arch: " + osbean.getArch());
System.out.println("Available Processors: "
+ osbean.getAvailableProcessors());
System.out.println("TotalPhysicalMemorySize: "
+ toMB(osbean.getTotalPhysicalMemorySize()));
System.out.println("FreePhysicalMemorySize: "
+ toMB(osbean.getFreePhysicalMemorySize()));
System.out.println("TotalSwapSpaceSize: "
+ toMB(osbean.getTotalSwapSpaceSize()));
System.out.println("FreeSwapSpaceSize: "
+ toMB(osbean.getFreeSwapSpaceSize()));
System.out.println("CommittedVirtualMemorySize: "
+ toMB(osbean.getCommittedVirtualMemorySize()));
System.out.println("SystemLoadAverage: "
+ osbean.getSystemLoadAverage());

}

public UseMxBean() {
seperator(); showOSBean();
seperator(); showThreadBean();
seperator(); showClassLoading();
seperator(); showMemory();
seperator(); showDisk();
seperator(); showCPU();
seperator();
}

/* added cafe mocha 2009-06 */
private void seperator() {
System.out.println("-----------------------------------------------");
}
/* added cafe mocha 2009-06 */
private String toMB(long size)
{
return (int)(size/(1024*1024))+"(MB)";
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值