【发布时间】:2012-01-01 06:30:57
【问题描述】:
我有以下测试程序:
public static void main(String[] args)
{
HashMap<Integer, String> hm = new HashMap<Integer,String>();
int i = 1;
while(true)
{
hm.put(i, "blah");
i++;
System.out.println("############");
System.out.println("Max mem: " + Runtime.getRuntime().maxMemory());
System.out.println("Total mem: " + Runtime.getRuntime().totalMemory());
System.out.println("Free mem:" + Runtime.getRuntime().freeMemory());
}
}
如果我运行这个程序,我会得到以下输出:
...
############
Max mem: 8060928
Total mem: 8060928
Free mem:334400
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap.addEntry(Unknown Source)
at java.util.HashMap.put(Unknown Source)
at Test.main(Test.java:14)
为什么我得到一个“OutOfMemoryError”异常,尽管方法 freeMemory() 返回有更多可用内存???如果有办法使用所有的freeMemory()?
【问题讨论】:
标签: java exception memory out-of-memory