From 4367d997ef1f887982e21f14625219f8985a3585 Mon Sep 17 00:00:00 2001 From: elong Date: Mon, 16 Nov 2015 16:23:38 -0500 Subject: [PATCH] add heap memory, os processors, load average --- .../jumpmind/symmetric/util/SnapshotUtil.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/symmetric-client/src/main/java/org/jumpmind/symmetric/util/SnapshotUtil.java b/symmetric-client/src/main/java/org/jumpmind/symmetric/util/SnapshotUtil.java index 4f4200e95a..96eb2f6ed1 100644 --- a/symmetric-client/src/main/java/org/jumpmind/symmetric/util/SnapshotUtil.java +++ b/symmetric-client/src/main/java/org/jumpmind/symmetric/util/SnapshotUtil.java @@ -28,10 +28,15 @@ import java.io.IOException; import java.io.InputStream; import java.lang.management.ManagementFactory; +import java.lang.management.MemoryPoolMXBean; +import java.lang.management.MemoryType; +import java.lang.management.MemoryUsage; +import java.lang.management.OperatingSystemMXBean; import java.lang.management.RuntimeMXBean; import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.Enumeration; @@ -430,7 +435,24 @@ public synchronized Enumeration keys() { runtimeProperties.setProperty("memory.free", String.valueOf(rt.freeMemory())); runtimeProperties.setProperty("memory.used", String.valueOf(rt.totalMemory() - rt.freeMemory())); runtimeProperties.setProperty("memory.max", String.valueOf(rt.maxMemory())); - + + List memoryPools = new ArrayList(ManagementFactory.getMemoryPoolMXBeans()); + long usedHeapMemory = 0; + for (MemoryPoolMXBean memoryPool : memoryPools) { + if (memoryPool.getType().equals(MemoryType.HEAP)) { + MemoryUsage memoryUsage = memoryPool.getCollectionUsage(); + runtimeProperties.setProperty("memory.heap." + memoryPool.getName().toLowerCase().replaceAll(" ", "."), + Long.toString(memoryUsage.getUsed())); + usedHeapMemory += memoryUsage.getUsed(); + } + } + runtimeProperties.setProperty("memory.heap.total", Long.toString(usedHeapMemory)); + + OperatingSystemMXBean osBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); + runtimeProperties.setProperty("os.name", System.getProperty("os.name") + " (" + System.getProperty("os.arch") + ")"); + runtimeProperties.setProperty("os.processors", String.valueOf(osBean.getAvailableProcessors())); + runtimeProperties.setProperty("os.load.average", String.valueOf(osBean.getSystemLoadAverage())); + runtimeProperties.setProperty("engine.is.started", Boolean.toString(engine.isStarted())); runtimeProperties.setProperty("engine.last.restart", engine.getLastRestartTime().toString());