为什么java需要花费很长时间来初始化二维数组,从第一维具有大尺寸数开始?

Eha*_*sin 6 java arrays performance memory-management time-complexity

我注意到像这样初始化2D数组

情况1 :-

int ar [] [] = new int [10000001][10] ;
Run Code Online (Sandbox Code Playgroud)

花费更多的时间而不是像这样初始化它

案例2: -

int ar[] [] = new int [10] [10000001] ;
Run Code Online (Sandbox Code Playgroud)

在案例1中,它的时间大约是4000毫秒,但在案例2中它不超过100毫秒,为什么会有这么大的差距?

das*_*ght 10

严格地说,Java没有2D数组:相反,它使用排列成一维数组阵列的一维数组.

在第一种情况下,除了单个数组数组之外,Java生成10000个10个元素的数组,而在第二种情况下,它生成10个10000001个数组.

由于对象的数量相差百万,因此第一种情况明显变慢.