From 8979cb0b2da3d6f8bfbde36804afc241ce1522f3 Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Wed, 10 Jun 2015 07:52:43 -0400 Subject: [PATCH] 8086117: java/lang/Runtime/exec/LotsOfOutput.java still fails intermittently with Process consumes memory Reviewed-by: chegar --- .../java/lang/Runtime/exec/LotsOfOutput.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/jdk/test/java/lang/Runtime/exec/LotsOfOutput.java b/jdk/test/java/lang/Runtime/exec/LotsOfOutput.java index 8d0c9514486..a77ffcb01a0 100644 --- a/jdk/test/java/lang/Runtime/exec/LotsOfOutput.java +++ b/jdk/test/java/lang/Runtime/exec/LotsOfOutput.java @@ -48,20 +48,21 @@ public class LotsOfOutput { UnixCommands.ensureCommandsAvailable("cat"); Process p = runtime.exec(UnixCommands.cat() + " /dev/zero"); - long initMemory = usedMemory(); - boolean growing = false; + long prev = usedMemory(); + int growing = 0; for (int i = 1; i < 10; i++) { Thread.sleep(100); long used = usedMemory(); - if (used != initMemory) { - System.out.printf("consuming memory: i: %d, initial: %d, used: %d, delta: %d%n", - i, initMemory, used, used - initMemory); + if (used != prev) { + System.out.printf("consuming memory: i: %d, prev: %d, used: %d, delta: %d%n", + i, prev, used, used - prev); } - if (used > initMemory + THRESHOLD) - growing = true; + if (used > prev + THRESHOLD) + growing += 1; + prev = used; } - if (growing) - throw new Exception("Process consumes memory."); + if (growing > 2) + throw new Exception("Process consumes memory: growing " + growing); } }