【发布时间】:2011-10-24 05:04:26
【问题描述】:
我在玩 Oracle 网站上的一些集合示例
public class Timing {
public static void method(){
List numbers = new ArrayList();
for (double i = 1; i <= Double.MAX_VALUE; i++)
numbers.add(new Double(i));
Collections.shuffle(numbers);
List winningcombination = numbers.subList(0, 10);
Collections.sort(winningcombination);
}
public static void main(String[] args)
{
long start = System.currentTimeMillis();
method();
long end = System.currentTimeMillis();
System.out.println("time elapsed : " + (end-start));
}
}
我试图查看 Double.MAX_VALUE 需要多长时间。我得到了这个:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.ArrayList.ensureCapacity(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
我有办法解决这个问题吗?
【问题讨论】:
-
实际异常发生在 ArrayList 选择增长(并将其旧内容复制到新的后备数组)时
标签: java list collections out-of-memory heap-memory