1. 程式人生 > >常見jvm記憶體溢位典型案例

常見jvm記憶體溢位典型案例

-agentlib:hprof=heap=dump,format=b,file=C:\Users\sxp\Desktop\heapDump1.hprof
jvm生成快照檔案
1吞吐量優先收集器在硬體提升的情況下由於大物件在更大堆中的頻繁 FULL GC導致的效能下降問題
解決方案
a)更換64位JDK等增大堆容量的操作,評估FULL GC時間,定期full gc
b)搭建jvm叢集,配置前端分配負載均衡,分擔堆GC縮短stop the world
2堆中 eden survivor perm gen 執行正常,出現記憶體溢位異常,由於頻繁NIO導致directory memory記憶體滿在catch快中呼叫system.gc不被響應導致的記憶體溢位問題
(directry memory在記憶體達到上限時,不能像堆樣被GC)
3通過Runtime.getRuntime.exec()的方式獲取系統引數導致複製程序系統開銷過大,CPU被佔用過大,導致效能下降
建議使用java api相關方法獲取系統引數


4使用JBOSSCache進行資料傳輸工作,在網路異常情況下,導致資料無法同步,無限增大不被銷燬的情況,導致記憶體溢位(這是部分解決方案的漏洞)
5介面響應速度不匹配導致的JVM負載太大,程序奔潰的情況
解決方案
將非同步呼叫方式改為生產者消費者的訊息佇列實現

這裡寫程式碼片