public DataBuffer getServerStatus(int version) { DataBuffer buffer = new DataBuffer(); // system info double cpu = roundToDecimals(cpuMonitor.getCpuUsage() * 100, 2); long freeMem = Runtime.getRuntime().freeMemory(); long maxMem = Runtime.getRuntime().maxMemory(); long totalMem = Runtime.getRuntime().totalMemory(); buffer.writeDouble(cpu); buffer.writeLong(freeMem); buffer.writeLong(maxMem); buffer.writeLong(totalMem); // threads list long totalThreadsCpuTime = 0; long[] threadIds = ManagementFactory.getThreadMXBean().getAllThreadIds(); buffer.writeInt(threadIds.length); // 多少条线程. for (int i = 0; i < threadIds.length; i++) { long id = threadIds[i]; String name = ManagementFactory.getThreadMXBean().getThreadInfo(id).getThreadName(); long cpuTime = 0; if (ManagementFactory.getThreadMXBean().isThreadCpuTimeSupported() && ManagementFactory.getThreadMXBean().isThreadCpuTimeEnabled()) { cpuTime = ManagementFactory.getThreadMXBean().getThreadCpuTime(id); totalThreadsCpuTime += cpuTime; } buffer.writeLong(id); buffer.writeString(name); buffer.writeLong(cpuTime); } buffer.writeLong(totalThreadsCpuTime); return buffer; }
public Dashboard() { // Create CPU monitoring class cpuMonitor = new PerformanceMonitor(); cpuMonitor.getCpuUsage(); // Set baseline }