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 来源:知乎 著作权归作者所有,转载请联系作者获得授权。