1.解決oom異常或者heap space異常,首先需要內存映像分析工具,eclipse的mat(menory analyzer tool)或者 idea的jprofiler對dump出來的堆轉存快照進行分析,重點是確認內存中的對象是否是必要的,也要線分清楚到底出現的是內存泄漏還是內存溢出;
2.如果是內存泄漏,可進一步通過工具查看泄露對象到GC Roots的引用鏈。於是就能找到泄露對象是通過怎樣的路徑與GC Roots相關聯並導致垃圾收集器無法自動回收他們的,掌握泄漏對象的信息,以及GC Roots引用鏈的信息,就可以比較准確的定位出泄露代碼的位置。
3.如果不是內存泄漏,換句話說就是內存中的對象確實都還必須存活着,那就應當檢查虛擬機的堆參數(-Xmx和-Xms),與機器物理內存對比看是否還可以調大,從代碼上檢查是否存在某些對象生命周期過長,持有狀態時間過長的情況,嘗試減少程序運行期間的內存消耗.