diff --git a/core-java-modules/core-java-arrays-guides/src/main/java/com/baeldung/array/MaxSizeArray.java b/core-java-modules/core-java-arrays-guides/src/main/java/com/baeldung/array/MaxSizeArray.java new file mode 100644 index 0000000000..76a6a9290a --- /dev/null +++ b/core-java-modules/core-java-arrays-guides/src/main/java/com/baeldung/array/MaxSizeArray.java @@ -0,0 +1,15 @@ +package com.baeldung.array; + +public class MaxSizeArray { + + public static void main(String... strings) { + for (int i = 2; i >= 0; i--) { + try { + int[] arr = new int[Integer.MAX_VALUE - i]; + System.out.println("Max-Size : "+ arr.length); + } catch (Throwable t) { + t.printStackTrace(); + } + } + } +} diff --git a/core-java-modules/core-java-arrays-guides/src/test/java/com/baeldung/arrays/MaxArrySizeUnitTest.java b/core-java-modules/core-java-arrays-guides/src/test/java/com/baeldung/arrays/MaxArrySizeUnitTest.java new file mode 100644 index 0000000000..ab79e83247 --- /dev/null +++ b/core-java-modules/core-java-arrays-guides/src/test/java/com/baeldung/arrays/MaxArrySizeUnitTest.java @@ -0,0 +1,30 @@ +package com.baeldung.arrays; + +import org.junit.Assert; +import org.junit.Test; + +public class MaxArrySizeUnitTest { + + @Test + public void whenInitialArrayMoreThanMaxSize_thenThrowArray() { + boolean initalized = false; + try { + int[] arr = new int[Integer.MAX_VALUE - 1]; + initalized = true; + } catch (Throwable e) { + Assert.assertTrue(e.getMessage().contains("Requested array size exceeds VM limit")); + } + Assert.assertFalse(initalized); + } + + @Test + public void whenInitialArrayLessThanMaxSize_thenThrowArray() { + int[] arr = null; + try { + arr = new int[Integer.MAX_VALUE - 2]; + } catch (Throwable e) { + Assert.assertTrue(e.getMessage().contains("Java heap space")); + } + } + +}