文件監聽,內存溢出了

爲什麼做了文件監聽功能,內存溢出了?

忙於做項目,現在簡單貼一些代碼和分析原因。

項目裏面有一個配置文件,做了監聽,這個是放數據的。紅線部分是文件修改

 

這個是文件監聽的方法。文件修改又調用了初始化的方法,初始化裏面最下面又調用了上面的方法。

 

 

這個 是初始化的方法,下面又調用了上面文件監聽的方法。循環了。並且初始化方法是同步的。上面監聽是3s

 

 

發現問題的過程也是比較難,開始發現啓動了項目。過半個小時左右電腦cpu 100% 卡死了

總結一下。這個地方文件監聽裏創建了線程。文件修改又調用了一個文件監聽器。循環創建了多個線程。而且後創建的線程都是阻塞的。線程越來越多。內存溢出了。

如何確定問題所在。項目啓動,啓動arthas。調用thread -n 10一直查看線程信息。發現線程數量很多。線程棧信息裏面看到代碼位置,發現有一個方法一直在調用配置文件,1s左右修改一次。

解決:如何解決這個問題呢。代碼應該怎麼修改?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章