維護(hù)一個(gè)老系統(tǒng),發(fā)現(xiàn)有java.lang.OutOfMemoryError: Java heap space的情況,內(nèi)存溢出,以下是大致的解決過(guò)程: 1.安裝JProfiler,并配置成監(jiān)控本地的tomcat 2.修改catalina.bat,添加參數(shù): set JAVA_OPTS= -Xms768m -Xmx1024m -verbose:gc -Xloggc:../logs/gclog.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+HeapDumpOnOutOfMemoryError %JAVA_OPTS% 3.使用JProfiler在Tomcat的bin目錄下創(chuàng)建的啟動(dòng)腳本startup_jprofiler.bat重啟tomcat 4.運(yùn)行JProfiler觀察內(nèi)存狀況,未發(fā)現(xiàn)問(wèn)題 5.第二天突然發(fā)現(xiàn)Tomcat再次出現(xiàn)內(nèi)存溢出,Tomcat的bin目錄下自動(dòng)生成了java_pid107932.hprof文件,將此文件下載到本地,以便分析。 6.下載Memory Analyzer工具,然后打開(kāi)該hprof文件進(jìn)行分析,發(fā)現(xiàn)是SmartUpload的問(wèn)題:com.jspsmart.upload.Files占用內(nèi)存1G多。 7.用Apache的上傳組件替換掉smartupload,目前沒(méi)有發(fā)現(xiàn)問(wèn)題
附上Memory Analyzer分析的圖片:
Leak Suspects顯示,有一個(gè)東西占了1007.9M的內(nèi)存:
點(diǎn)擊底部的Details鏈接,發(fā)現(xiàn)是com.jspsmart.upload.Files占用內(nèi)存最多:
|
|
來(lái)自: squarecome > 《我的圖書(shū)館》