close

  以前3rd party的朋友問我,List list = new ArrayList(),想把裡面的值清空再替代新值,不能使用list = null再list = new ArrayList()嗎?他是以C語言角度來寫Java,後來我回答他用list.clear()就OK了。今天也遇到類似的問題,想把list傳給Thread後清空重複使用,發現不能用list.clear(),連帶的Thread裡的list reference跟著被清空。反而在傳完list給Thread後,改先list = null再list = new ArrayList()就可以work。在Java的Resource Recycle機制,即使instance被設為null,只要還有別的物件參考到它,基本上還不會歸還給記憶體,直到沒有物件參考它時。有時…會忘了這些基本功。

arrow
arrow
    全站熱搜

    Jemmy 發表在 痞客邦 留言(0) 人氣()