91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

記一次JVM內存溢出的處理過程

發布時間:2020-08-11 05:54:54 來源:ITPUB博客 閱讀:123 作者:u_7deeb657158f 欄目:編程語言

概要

筆者所管理的測試一臺業務服務器,近期經常被反饋應用卡頓并且出現過多次內存溢出,本篇為對此問題的處理過程的記錄。
服務器環境采用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

在MAT的Leak Suspects中,可以看到很詳細的信息,有兩個對象占用了大量的內存。
記一次JVM內存溢出的處理過程
通過查看線程信息發現為一個報表功能,該報表查詢的數據量太大,而且sql效率比較低。
記一次JVM內存溢出的處理過程

優化思路

  • 限制報表提取條件,盡量控制報表的大小在合理范圍內
  • 超大的報表采用其他實現方式,例如通過定時任務將報表生成存放在指定文件服務器,由用戶自行下載
  • 本例中的報表會由jdbc的ResultSet 轉成最終的報表對象,中間會經歷很多中間步驟,例如Vetcory、ArrayList等,盡量減少中間步驟
  • 優化sql,盡快釋放對象,可以被GC進行回收
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

瓦房店市| 志丹县| 九龙县| 金溪县| 高青县| 邵武市| 无为县| 淮安市| 东港市| 商城县| 兴安盟| 芮城县| 阳城县| 辰溪县| 根河市| 西林县| 大兴区| 都江堰市| 淄博市| 内丘县| 定襄县| 洪江市| 绵竹市| 双江| 囊谦县| 恭城| 安仁县| 开封县| 滨州市| 贵溪市| 武强县| 辽阳市| 宜君县| 宜章县| 连州市| 安阳县| 喀喇沁旗| 玉山县| 长乐市| 巍山| 德兴市|