問題描述:
發現在AppSvr01下面有heapdump.***.phd和javacore.***.txt文件產生,有時會很快將空間充滿
產生的原因:
生產這兩個文件,說明有OutOfMemory發生,可以查看SystemErr.log確定發送的愿意,是參數設置有問題,還是程序有內存泄露。
首先查看SystemErr.log”確定內存溢出的原因,是PermSize太小,還是Nativethread無法創建,前者用MaxPermSize調整(IBM JDK沒有這個參數),后者調小最大堆大小或者Xss調整每個線程非配內存的大小。
如果是常見的堆溢出,確保OutOfMemory時能生成heapdump文件,用Dumpanalyzer或者MDD4J分析dump文件,找到堆中占用空間總數最大的(或數量最多的)對象。然后調整堆范圍到一個比較小的區間,比如256M至384M,重新啟動服務器,在運行1小時后手動做一次heapdump,運行4小時后做一次heapdump,運行8小時后做一次(間隔僅做參考)。然后分析一下三者的區別,看看那個對象數據增長很多,占用空間增加很大。結果OutOfMemory時候的分析,應該能鎖定問題的源頭。