Beispiel #1
0
  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;
  }
Beispiel #2
0
 public Dashboard() {
   // Create CPU monitoring class
   cpuMonitor = new PerformanceMonitor();
   cpuMonitor.getCpuUsage(); // Set baseline
 }