From 7109fff08872f9ba4d62b6f27506d743b49cf2ab Mon Sep 17 00:00:00 2001 From: Steve Roughley Date: Tue, 5 Mar 2024 11:01:56 +0000 Subject: [PATCH] Fix possible IAE in getHeapUsage() The implementation of WorkflowTest#getHeapUsage() is modified to avoid the possibility of summing in individual pools which return `-1` for `#getMax()` Fixes #14 --- .../knime/testing/core/ng/WorkflowTest.java | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/plugin/src/java/nl/esciencecenter/e3dchem/knime/testing/core/ng/WorkflowTest.java b/plugin/src/java/nl/esciencecenter/e3dchem/knime/testing/core/ng/WorkflowTest.java index f6a7ddc..7ae51c7 100644 --- a/plugin/src/java/nl/esciencecenter/e3dchem/knime/testing/core/ng/WorkflowTest.java +++ b/plugin/src/java/nl/esciencecenter/e3dchem/knime/testing/core/ng/WorkflowTest.java @@ -48,8 +48,6 @@ package nl.esciencecenter.e3dchem.knime.testing.core.ng; import java.lang.management.ManagementFactory; -import java.lang.management.MemoryPoolMXBean; -import java.lang.management.MemoryType; import java.lang.management.MemoryUsage; import org.eclipse.core.runtime.IProgressMonitor; @@ -120,20 +118,6 @@ public void aboutToStart() { protected static MemoryUsage getHeapUsage() { System.gc(); - long initMem = 0; - long maxMem = 0; - long committedMem = 0; - long usedMem = 0; - for (MemoryPoolMXBean memoryPool : ManagementFactory.getMemoryPoolMXBeans()) { - if (memoryPool.getType().equals(MemoryType.HEAP) && (memoryPool.getCollectionUsage() != null)) { - MemoryUsage usage = memoryPool.getUsage(); - - initMem += usage.getInit(); - maxMem += usage.getMax(); - committedMem += usage.getCommitted(); - usedMem += usage.getUsed(); - } - } - return new MemoryUsage(initMem, usedMem, committedMem, maxMem); + return ManagementFactory.getMemoryMXBean().getHeapMemoryUsage(); } }