我认为我需要一些帮助来理解垃圾收集,我知道垃圾收集会清除那些没有来自实时线程的参与者,所以例如我有一个类解码这样的图像:
new ImageDecoder(MyImageView).Decode();
我是否需要保留对ImageDecoder类的引用并稍后将其置空,否则每当我调用MyImageView.setBackgroundResource(0)时它都会回收; ?
或者每当我创建对类的引用时,该类会增加大量的堆栈,所以每当我这样做时
MyClass aClass;
...
aClass = null;
然后堆应该从那些根据文章中取出的那些堆中解放出来,但是在我看到的现实生活中它并没有发生,它是如何工作的?
非常感谢;
答案 0 :(得分:0)
你无法控制Java,同样适用于此。分配aClass = null并不意味着GC将立即运行并在堆上释放内存。当他认为JVM内存不足并且新对象的创建需要更多空间然后它可以运行以防万一我停止你的主线程并冻结你的应用程序时它会运行。