1. 程式人生 > >如果物件的引用被置為null,垃圾收集器是否會立即釋放物件佔用的記憶體?

如果物件的引用被置為null,垃圾收集器是否會立即釋放物件佔用的記憶體?

連結:https://www.nowcoder.com/questionTerminal/fbef4d5971ce4009aa720aecf7d83f3c?pos=81&mutiTagIds=570&orderByHotValue=1
來源:牛客網

不會立即釋放物件佔用的記憶體。 如果物件的引用被置為null,只是斷開了當前執行緒棧幀中對該物件的引用關係,而 垃圾收集器是執行在後臺的執行緒,只有當用戶執行緒執行到安全點(safe point)或者安全區域才會掃描物件引用關係,掃描到物件沒有被引用則會標記物件,這時候仍然不會立即釋放該物件記憶體,因為有些物件是可恢復的(在 finalize方法中恢復引用 )。只有確定了物件無法恢復引用的時候才會清除物