Test Exam=new Test(); Exam=null;
第一個“=”將new Test()所創建的對象,引用給Exam。
Exam是對象的引用而不是對象本身,Exam=null只是解除了Exam與原對象的引用關系,而並不沒有釋放原對象。所以,在這個時候,內存並不會減少。
這時,根據HotSpot可達分析性算法,該對象就成為了“垃圾”占用着內存空間,需要通過垃圾收集器來回收這些空間。由於Java的垃圾回收機制,Java不需要像C或C++那樣通過程序代碼來顯示地釋放空間,而會由JVM自行回收,這部分空間何時回收是不可預知的。
作者:哇魚 鏈接:https://www.zhihu.com/question/21356272/answer/17982196 來源:知乎 著作權歸作者所有,轉載請聯系作者獲得授權。