重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
筆者所管理的測試一臺業務服務器,近期經常被反饋應用卡頓并且出現過多次內存溢出,本篇為對此問題的處理過程的記錄。
服務器環境采用Oracle JDK1.6,虛擬機為HosSpot,Web容器為Tomcat7。
在用戶反饋系統卡頓時,登陸服務器通過命令查看內存使用情況
創新互聯堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都做網站、成都網站制作、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的蔚縣網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
jps #獲取java的進程ID
jstat -gc 31795 #31795為jps查詢到的進程ID
得到內存使用情況如下:
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
932032.0 932032.0 0.0 0.0 932096.0 932096.0 5592448.0 5592448.0 131072.0 60017.9 20 13.991 69 892.270 906.260
從結果可以得知,堆內存已經達到容量上限,并且在不斷的進行FGC,所以應用系統表現的特別卡頓。
通過jmap命令生成堆轉儲快照:
jmap -dump:format=b,file=heap.hprof 31795
出現以下提示則表示生成成功:
Attaching to process ID 31795, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 20.45-b01
Dumping heap to heap.hprof ...
Heap dump file created
使用MemoryAnalyzer打開堆轉儲快照,但提示heap space的堆內存溢出的異常:
An internal error occurred during: "Parsing heap dump from 'java_pid4259.hprof'".
Java heap space
修改配置MemoryAnalyzer.ini,調整堆內存大小
-Xms1024m
-Xmx8192m