我很好奇这件事在Android内部是如何工作的。我有两个列表类<>内,在运行时实例化,并装载在阅读一些数据创建的对象,我想知道这些名单在这种情况下发生的:Android垃圾回收器,释放对象内的对象
A类具有列表B和列表C与其他许多初始化对象 里面。
另一个不同的类从类别A的 方法获得参考列表C,如
public List<myObject> GetList()
。在代码的某处,不再使用A类,并且应用程序 向垃圾收集器发出信号,将对象设置为空。
我的列表C被其他对象引用会发生什么?对象类A会发生什么?
我试图跟踪垃圾收集器与Logcat运行apk在调试器中一步一步但没有运气。有时它释放记忆,有时不会,我无法确定任何特定的行为。
虽然小精灵的答案也是正确的,但我倾向于选择格雷格的这样一个伟大的建议,真的很值得。我刚刚发现如何正确处理我的物体以提高性能,非常感谢! – ruhalde
@ruhalde:我希望你不会使用finalization来提高性能,因为它只会降低性能。这里有一篇关于GC的好文章:http://java.sun.com/docs/books/performance/1st_edition/html/JPAppGC.fm.html。 – Michael
我从来没有建议使用finalize除了学习工具以外的其他任何东西。它绝对不是执行任何清理或所需功能的地方,但可以成为学习GC如何工作的好方法。正如我在原始文章中提到的,我还建议您在完成实验/测试时删除最终确认电话。 –