1. 程式人生 > >spring boot devtools遇到的坑

spring boot devtools遇到的坑

背景:

    專案中用到了spring boot devtools實現本地專案熱部署,很方便;上線之後壓測發現有些不樂觀,服務的記憶體一直不能釋放,看GC的log,回收了也不好使;

問題排查:

   dump下來jvm快照檔案.hprof,使用JProfiler和IBMAnalyzer工具分析,發現並沒有特殊大的地方佔用記憶體;

   於是在本地使用JMeter工具壓測,用JVisualVM工具實時監測jvm情況,堆疊並沒有異常現象,但是在在抽樣器->執行緒,

的時候發現了問題,有個叫:File Watcher的執行緒,只要服務活著,就一直佔用大量記憶體(ps:問題可能就是這裡,GC不掉);

    然後本地debug,這裡有個重要的打斷點方式,就是在java.lang.Thread所有賦值 this.name 的地方打斷點,並且寫上condition表示式篩選:name.contains("File Watcher") 

發現是spring boot devtools開啟的這個執行緒,監視所有檔案變化;

至此問題定位到了,我直接用簡單粗暴的方法,刪掉devtools的maven依賴,此問題解決。