summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/080-oom-throw/src/Main.java12
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;