為什麼做了檔案監聽功能,記憶體溢出了?
忙于做項目,現在簡單貼一些代碼和分析原因。
項目裡面有一個配置檔案,做了監聽,這個是放資料的。紅線部分是檔案修改

這個是檔案監聽的方法。檔案修改又調用了初始化的方法,初始化裡面最下面又調用了上面的方法。
這個 是初始化的方法,下面又調用了上面檔案監聽的方法。循環了。并且初始化方法是同步的。上面監聽是3s
發現問題的過程也是比較難,開始發現啟動了項目。過半個小時左右電腦cpu 100% 卡死了
總結一下。這個地方檔案監聽裡建立了線程。檔案修改又調用了一個檔案監聽器。循環建立了多個線程。而且後建立的線程都是阻塞的。線程越來越多。記憶體溢出了。
如何确定問題所在。項目啟動,啟動arthas。調用thread -n 10一直檢視線程資訊。發現線程數量很多。線程棧資訊裡面看到代碼位置,發現有一個方法一直在調用配置檔案,1s左右修改一次。
解決:如何解決這個問題呢。代碼應該怎麼修改?