How long is the maximum length of a Java integer array?
Today on the Internet to check a bit, all kinds of statements have, this problem seems to always bother us Java beginner, helpless, had to try for a while, the following is my test code, if there are errors, but also look at the liberal enlighten!
Using Eclipse's default VM arguments, run the following code:
public static void Main (string[] args) {
Byte[] Array=new byte[61858764];
Short[] Shortarray=new short[30929382];
Int[] Intarray=new int[15464691];
Long[] Longarray=new long[7732345];
}
Success, no error, I know under Eclipse default VM arguments, the maximum length of the byte array is 61858764, which will be nearly 60M.
Since short is one-fold longer than byte, the maximum length of the short array is 30929382, which is half the maximum length of the byte array,
And so on, the maximum length of the int array is the 15464691,long array maximum length is 7732345
I thought this was the end result, and then it suddenly occurred to me to change the maximum memory of the virtual machine, is this the result?
I modified the Eclipse VM arguments setting to:-xms256m-xmx768m
Test the code again and find that the maximum length of the byte array can be longer,
The Windows Task Manager shows that the Javaw.exe process running the code consumes more memory (nonsense, hehe)
To this end, it should be concluded that by modifying the maximum memory for a virtual machine, the maximum length of a Java integer array can be very long, but how long? (definitely smaller than memory)
I tried to define a byte array with a length of 618587640, would be nearly 600M, no error, the longer array seemed meaningless, and I did not test.
PS: The above test, I just define such a long array, and do not operate on these arrays, so I do not guarantee the actual operation of the array without error (I lazy)
And, I'm just testing an array of integers, not testing other types of arrays, and I'm not sure whether other types of arrays also fit this conclusion (and lazy)
Should be related to memory, array length parameter is int, so theoretically the maximum number is Integer.max_value
How long is the maximum length of a Java integer array?