public double computeCpuPerc(JVMStatistics lastJVMStatistics) { // This object has been created by read external by a new client // The object itself has been serialized by and old (< 8.0.3) server if (lastJVMStatistics.getCpuTime() <= 0 || getCpuTime() <= 0) { return cpuPerc; } long timeDelta = getCpuTime() - lastJVMStatistics.getCpuTime(); long totalDelta = getCpuTotal() - lastJVMStatistics.getCpuTotal(); if (timeDelta <= 0 || totalDelta < 0) { return -1; } return ((double) totalDelta) / timeDelta; }
public JVMStatistics probeStatistics() { long gcCollectionCount = 0; long gcCollectionTime = 0; List<GarbageCollectorMXBean> gcMxBeans = ManagementFactory.getGarbageCollectorMXBeans(); for (GarbageCollectorMXBean gcMxBean : gcMxBeans) { long tmp = gcMxBean.getCollectionCount(); if (tmp != -1) { gcCollectionCount += tmp; } tmp = gcMxBean.getCollectionTime(); if (tmp != -1) { gcCollectionTime += tmp; } } return new JVMStatistics(System.currentTimeMillis(), runtimeMXBean.getUptime(), memoryMXBean.getHeapMemoryUsage().getCommitted(), memoryMXBean.getHeapMemoryUsage().getUsed(), memoryMXBean.getNonHeapMemoryUsage().getCommitted(), memoryMXBean.getNonHeapMemoryUsage().getUsed(), threadMXBean.getThreadCount(), threadMXBean.getPeakThreadCount(), gcCollectionCount, gcCollectionTime); } }
@Override public void run() { RmiLoaderHandlerCleaner loaderHandlerCleaner = new RmiLoaderHandlerCleaner(); JVMStatistics jvmStats = JVMHelper.getStatistics(); while (!Thread.currentThread().isInterrupted()) { try { Thread.sleep(scheduledSystemBootTime); } catch (InterruptedException e) { break; } JVMStatistics newStats = JVMHelper.getStatistics(); long collectionTime = newStats.getGcCollectionTime() - jvmStats.getGcCollectionTime(); if (collectionTime > gcCollectionWarning) { logger.warning("Long GC collection occurred, took [" + collectionTime + "ms], breached threshold [" + gcCollectionWarning + "]"); } jvmStats = newStats; if (loadCleanerEnabled) { loaderHandlerCleaner.clean(); } exitIfHasAgentAndAgentIsNotRunning(); } } };
return new JVMStatistics(System.currentTimeMillis(), runtimeMXBean.getUptime(), memoryMXBean.getHeapMemoryUsage().getCommitted(), memoryMXBean.getHeapMemoryUsage().getUsed(), memoryMXBean.getNonHeapMemoryUsage().getCommitted(), memoryMXBean.getNonHeapMemoryUsage().getUsed(),