當試圖發現我的機器,我遇到了一些有趣的結果上的Java String數組的最大尺寸,這裏是代碼,這裏的內存分配是怎麼回事?
String [] max;
int i = 15444000;
while(true){
try{
max = new String[i];
System.gc();
Thread.sleep(10);
}catch(InterruptedException e){}
i += 1;
System.out.println(i);
}
每當我運行此代碼的輸出使得投擲前OutOfMemoryError異常。這使我認爲,我的機器上的一個Java String數組的最大尺寸爲,但是如果我更換
int i = 15444000;
與
int i = 15444037; // or any i between 15444037 and 15444002
的OutOfMemoryError錯誤立即發生。這是爲什麼,我的機器上Java String數組的真正最大大小是多少?
你分配給JVM多少內存? – CookieOfFortune 2009-04-29 22:05:51
作爲Cookie指出,GC是如此不可預測,以至於這樣的測試最終並不意味着很多。 – 2009-04-29 22:16:57