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:以上測試,我只是定義這么長的數組,並沒有對這些數組進行操作, 所以不敢保證實際操作數組時不報錯(我偷懶了)
        而且,我只是對整型數組進行測試,沒有對其他類型數組測試,不敢保證其他類型數組是否也符合這個結論 (又偷懶了)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM