diff options
-rw-r--r-- | test/080-oom-throw/src/Main.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/test/080-oom-throw/src/Main.java b/test/080-oom-throw/src/Main.java index cd36eff160..c9fd3610ff 100644 --- a/test/080-oom-throw/src/Main.java +++ b/test/080-oom-throw/src/Main.java @@ -55,12 +55,20 @@ public class Main { private static int exhaustJavaHeap(Object[] data, int index, int size) { Runtime.getRuntime().gc(); - while (index != data.length && size != 0) { + while (index != data.length) { try { data[index] = new byte[size]; ++index; } catch (OutOfMemoryError oome) { - size /= 2; + // Rapidly shrink the object size to fill any remaining space. + // Use few different sizes, since detecting out-of-memory is slow. + if (size >= 32) { + size /= 32; + } else if (size > 1) { + size = 1; + } else { + break; + } } } return index; |