Jam*_*sev 2 java garbage-collection
在new A(),我们分配足够的内存来保存A包含的所有对象.
对象A()可能包含其他对象,如B()和C()
问题1:何时A()不再需要并且您想将其从堆中删除,是否会设置它的引用来null执行此操作?(如果不是,现在JVM向GC这个对象发出信号的正确方法是什么?)
问题2:如果是这样,指向B()和的实例会发生什么C()
问题3:有没有办法可以观察到这种效果?(释放内存以释放对象)
将A设置为null将标记A作为GC释放的候选者.如果对这些实例的唯一引用来自实例A,则也会标记B和C的实例.
编辑问题3:调试此效果的一种简单方法是使用该方法finalize; 当一个物体被GC控制时,他finalize被召唤.
但是,请注意此方法:不保证始终执行finalize(因为GC不能保证释放对象),并且绝不应将其用于应用程序的一般用途.
根据您的IDE,有更好的调试工具.例如,在eclipse中:http://www.yourkit.com/docs/80/help/garbage_collection.jsp