在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java/ ThreadLocal對(duì)象使用的問(wèn)題

ThreadLocal對(duì)象使用的問(wèn)題

上次觀察我的應(yīng)用內(nèi)存占用很高,老年代的內(nèi)存每次GC下去的都不多,雖然沒(méi)有出現(xiàn)嚴(yán)重的FullGc,但是每次GC后老年代還會(huì)保留70%的內(nèi)存,感覺(jué)不合常理。

dump了一次堆后發(fā)現(xiàn),有很多內(nèi)存被ThreadLocal引用著,這是框架里面的,看了下框架,里面有一段代碼:private static ThreadLocal xxx = new ThreadLocal 做了一個(gè)靜態(tài)的,而且只有set沒(méi)有remove。

但是ThreadLocal是被線程綁定的,而且只有一個(gè)TL對(duì)象的話,每次set其實(shí)只會(huì)保留一個(gè)值,也不至于一直囤積。

ThreadLocal 做成靜態(tài)的這么用真的沒(méi)問(wèn)題嗎?

回答
編輯回答
挽青絲

threadlocal采用的就是空間換時(shí)間,所以內(nèi)存相對(duì)會(huì)大一點(diǎn)。

2017年9月1日 04:14
編輯回答
放開(kāi)她

很高...不多...這些術(shù)語(yǔ)大模糊了, 最好有具體的數(shù)字. 包括Java的啟動(dòng)內(nèi)存參數(shù)是什么?

內(nèi)存使用和場(chǎng)景有關(guān)好, 老年代之所以是老代就是因?yàn)樯嫫陂L(zhǎng),不應(yīng)每次都被回收才對(duì).

ThreadLocal一般生命周期是等同與Thread的. 關(guān)鍵是里面引用了哪些數(shù)據(jù),這些數(shù)據(jù)是不是也應(yīng)該有同樣長(zhǎng)的生命周期, 如果是的話,就認(rèn)為是合理的使用.
同時(shí)要看是哪些Thread持有的ThreadLocal, 是main,還是deamon還是http?

2018年9月1日 21:07