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