From e22bd11ba5f3f4d9e2371dda618e5136d6cce7db Mon Sep 17 00:00:00 2001 From: zhouyx Date: Tue, 5 Jun 2012 10:16:22 +0800 Subject: [PATCH] 7173044: MemoryMonitor hangs if getMax method in MemoryUsage object returns -1 Reviewed-by: dholmes, sspitsyn --- .../demo/management/MemoryMonitor/MemoryMonitor.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/share/demo/management/MemoryMonitor/MemoryMonitor.java b/src/share/demo/management/MemoryMonitor/MemoryMonitor.java index ca6ab6e41..7dd0b7c55 100644 --- a/src/share/demo/management/MemoryMonitor/MemoryMonitor.java +++ b/src/share/demo/management/MemoryMonitor/MemoryMonitor.java @@ -122,6 +122,7 @@ public class MemoryMonitor extends JPanel { private Font font = new Font("Times New Roman", Font.PLAIN, 11); private int columnInc; private float usedMem[][]; + private float usedMemMax[]; // Used when max pool size is undefined private int ptNum[]; private int ascent, descent; private Rectangle graphOutlineRect = new Rectangle(); @@ -142,6 +143,10 @@ public class MemoryMonitor extends JPanel { } }); usedMem = new float[numPools][]; + usedMemMax = new float[numPools]; + for (int i = 0; i < numPools; i++) { + usedMemMax[i] = 1024f * 1024f ; + } ptNum = new int[numPools]; } @@ -194,6 +199,12 @@ public class MemoryMonitor extends JPanel { MemoryPoolMXBean mp = mpools.get(npool); float usedMemory = mp.getUsage().getUsed(); float totalMemory = mp.getUsage().getMax(); + if (totalMemory < 0) { // Max is undefined for this pool + if (usedMemory > usedMemMax[npool]) { + usedMemMax[npool] = usedMemory; + } + totalMemory = usedMemMax[npool]; + } // .. Draw allocated and used strings .. big.setColor(Color.green); -- GitLab