如果我在类中有一个方法并且我在该方法中创建一个对象
那么该对象会被销毁并释放分配给它的内存吗
该方法完成后?
eg. -
public void drawFigure(){
Paint paint = new Paint();
paint.setSomeProperty();
canvas.drawLine(startPoint, finishPoint, paint);
}
那么drawFigure方法完成后,paint对象会被销毁吗?
与paint = null相同,但我不需要将其设置为null,
因为它是本地对象。我对吗?
不保证方法调用完成后对象就会被GC,但对象会变成eligible对于 GC 和下一次 GC 运行,它可能会被收集并且内存将被释放。
EDIT:
是的,你是对的。你不需要将其设置为null
。局部变量将在堆栈上创建,并且一旦方法完成,堆栈将被删除。所以,绘画将会从记忆中消失new Paint()
对象将位于堆上,没有任何引用,这使得上述对象符合 GC 的条件。
看到这个斯坦福大学教授的 YouTube 视频 http://www.youtube.com/watch?v=W8nNdNZ40EQ.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)