記錄一個由於線程池使用導致內存溢出的解決方案


由於使用到線程變量本地存儲,項目上線出現會內存溢出問題,
 
原因是。交易完成未在交易結束,清理到ThreadLoacl存儲的數據,導致線程存儲會隨交易的增加,而增加,導致內存溢出
 
解決方案,有兩種
 
配置規避:
代碼配置,因為使用到線程池,可以配置線程核心數,和線程最大數,為一致,
keepAliveTime = 0
當為負數,會報錯。
當設置為0時:
      當線程池中的線程數大於corePoolSize時,keepAliveTime為多余的空閑線程等待新任務的 最長時間,超過這個時間后多余的線程將被終止。這里把keepAliveTime設置為0L,意味着多余 的空閑線程會被立即終止。
 
當然設置為一樣的話,不會出現回收的問題,從制止解決多次創建多個線程,回收,導致的oom。
 
代碼規避:
代碼上:
調用remove 清除。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM