記一次tomcat記憶體大漲到溢位的經歷

2022-06-26 15:45:11 字數 882 閱讀 5964

前一段時間提交了乙個產品版本給測試人員測試,測試結果簡直出人意料!

測試一段時間後頁面就卡死了,當時根據這個現象下意識的懷疑是卡到資料庫這一層,然後檢視資料庫連線相關的引數,如意料之中的相似,連線數太多了!當把資料庫連線數解決後,本以為這個bug解決了,但是...

測試一段時間後頁面又卡死了!!!

開啟任務管理器,發現tomcat記憶體超過了1.5g,而且tomcat關不掉!是什麼原因導致的呢?左思右想之後,想到了乙個可能會導致tomcat記憶體**的點,那就是多執行緒,然後翻**找執行緒池的配置,發現也沒什麼可疑之處。

將**改為:

public

class initlistener implements

servletcontextlistener

@override

public

void

contextdestroyed(servletcontextevent sce)

}

好了,tomcat關不掉的問題是解決了。

接下來解決記憶體溢位的問題(先看日誌):

檢視tomcat的日誌發現,頁面每一次呼叫後台介面spring的配置檔案都會初始化一遍,也就是每次請求spring都會重新注入一次bean,而且占用的記憶體不會被**!

然後我就想什麼情況下會初始化spring的配置檔案:tomcat啟動的時候;通過關鍵字new出來的時候,即

然後就全域性搜尋**找,果然在過濾器裡找到了,每次介面來就會new乙個物件,多可怕的**,在心裡一直罵自己當時怎麼想的!這次經歷我會引以為戒,記下來也是告訴自己以後不要再犯類似的問題。

記一次goto記憶體洩漏

學習c語言時一直被告誡盡量不要使用goto語句,所以對其了解很少。在一次專案使用時由於之前的程式已經使用了goto,按照自己的理解去處理,結果導致記憶體未釋放。例子如下 include int main return 0 error printf aaaaa n printf 11111.n ret...

記一次記憶體溢位(PermGen Space)的坑

環境 jdk1.6 使用技術 urlclassloader 事件描述 使用urlclassloader類載入器,實現熱部署。定時任務載入jar包,任務執行300次左右就會報 permgen space 分析過程 1.檢視記憶體使用情況 jmap heap pid jdk8以後檢視元空間大小 jsta...

記一次tomcat部署排錯經歷(jar衝突)

18 feb 2022 08 32 46.836 severe localhost startstop 1 org.apache.catalina.core.standardcontext.startinternal context ospflowcenter startup failed due ...