jvm筆記- java堆內存溢出-實戰:OutOfMemoryError 異常

Java 堆溢出

     Java堆用於存儲對象實例,只要不斷地創建對象,並且保證 GC Roots 到對象之間有可達路徑來避免垃圾回收機制清除這些對象,那麼在對象數量到達最大堆的容量限制後就會產生內存溢出異常。

    代碼限制Java堆的大小爲20M,不可擴展(將堆的最小值-Xms參數與最大值-Xmx參數設置爲一樣即可避免堆自動擴展),通過參數 -XX:+HeapDumpOnOutOfMemoryError 可以讓虛擬機在出現內存溢出異常時Dump出當前的內存轉儲快照以便事後進行分析

 

參數配置如圖所示:

代碼如下:

/**
*    VM Args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
*/
public class HeapOOM {
    static class OOMObject{
    }
    
    public class void main(String[] args) {
        List<OOMObject> list = new ArrayList<OOMObject)();
        
        while(true) {
            list.add(new OOMObject());
        }
    }
}

運行結果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章