Java整型數組的最大長度到底有多長?

Java整型數組的最大長度到底有多長?

今天上網查了一下,各種說法都有,這個問題似乎總困擾我們Java初學者,無奈,只好自己試了一下,以下是我的測試代碼,如果有錯誤,還望不吝賜教!

 

使用eclipse默認的vm arguments,運行以下代碼:

 

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];
}

 

成功,沒有報錯,可知在eclipse默認的vm arguments下,byte數組的最大長度是61858764,將近60M。

由於short的長度比byte大一倍,所以short數組的最大長度是30929382,是byte數組最大長度的一半,

以此類推,int數組最大長度是15464691,long數組最大長度是7732345

 

 

 我以爲這就是最終結果,後來突然想起修改虛擬機的最大內存,也是這個結果嗎?

 我把eclipse的vm arguments設置修改爲:-Xms256M -Xmx768M

 再次測試代碼,發現byte數組的最大長度可以更長,

 通過Windows任務管理器可知,運行代碼的javaw.exe進程佔用的內存也更大(廢話,呵呵)

 

 到此爲止,應該可以得出結論,通過修改虛擬機的最大內存,java整型數組的最大長度可以很長,但到底有多長?(肯定比內存小)

 我試過定義一個byte數組的長度爲618587640,將近600M,沒有報錯,更長的數組似乎沒有意義,我也沒有測試。

 

 ps:以上測試,我只是定義這麼長的數組,並沒有對這些數組進行操作, 所以不敢保證實際操作數組時不報錯(我偷懶了)

        而且,我只是對整型數組進行測試,沒有對其他類型數組測試,不敢保證其他類型數組是否也符合這個結論 (又偷懶了)

 

轉載於:http://blog.csdn.net/mayumin/article/details/5904974

發佈了25 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章