小编use*_*813的帖子

Java:OutOfMemoryError异常和freeMemory()

我有以下测试程序:

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());
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我运行这个程序,我得到以下输出:

...

    ############
    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)
Run Code Online (Sandbox Code Playgroud)

为什么我得到一个"OutOfMemoryError"异常,虽然freeMemory()方法返回有更多的空闲内存??? 如果有办法使用所有freeMemory()?

java memory exception out-of-memory

6
推荐指数
2
解决办法
1372
查看次数

标签 统计

exception ×1

java ×1

memory ×1

out-of-memory ×1