java堆是用來存儲對象執行個體的;
隻要不斷建立對象,GC Roots到對象之間有可達路徑來避免垃圾回收機制清除這些對象,當對象數量達到最大堆的容量限制的時候就會産生記憶體溢出異常。
異常對戰資訊為OutOfMemoryError,進一步提示:java heap space。
如何解決?
記憶體映射工具,eclipse中的Memory Analyzer來對Dump出來的堆轉儲快照進行分析。
1、記憶體洩露:通過工具檢視洩露對想到Gc Root的引用鍊。
2、不存在記憶體洩露:記憶體中對象必須存活,檢查虛拟機的堆參數(-Xmx 與 -Xms),與機器實體記憶體對比看是否還可以調大,從代碼上檢查是否存在某些對象生命周期過長,持有狀态時間過長的情況,嘗試減少程式運作期的記憶體消耗