記一次java程式記憶體溢出問題

來源:互聯網
上載者:User

標籤:導致   mem   out   程式   語言   一個   jstat   cut   沒有   

一個自然語言處理常式,在封裝為web-service後,部署到線上運行。

但最近出現了記憶體溢出的情況,頻繁的out of memory。

先盲目嘗試在啟動指令碼中增加-XX:-UseGCOverheadLimit。

因為根據原因未找到,依然頻繁的out of memory,只能一直觀察jstat -gcutil <pid>,看到老生代記憶體降不下來時,重啟程式。

 

服務程式很簡單,簡單接收參數,自然語言處理,返回資料,除了自然語言處理模組,都是方法參數,不會出現記憶體流失的情況。

第一次解決這種記憶體溢出的問題,沒有太大頭緒。一直知道java 可以把記憶體dump下來,於是試著用mat分析記憶體。

 

分析記憶體時,直接查看dominator tree即可,這時查看的是所有root引用的執行個體,那個執行個體記憶體佔用異常一目瞭然。

通過此種方式找到了記憶體溢出的原因:

有服務要求者發送的文本長達10萬字,自然語言處理模組建立了大量的變數,佔用了大量的記憶體,加之大文本的分析緩慢,佔用的記憶體一直未釋放,導致後續資料處理時無法獲得充足的記憶體。

此時再來一個大文本,服務就掛了。

 

13333333333333~

記一次java程式記憶體溢出問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.