当试图发现我的机器,我遇到了一些有趣的结果上的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