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);
}
}