java中本地对象的内存管理

Ank*_*kit 4 java garbage-collection memory-management

如果我在一个类中有一个方法,并且我在该方法中创建了一个对象,那么该方法完成后会破坏该对象并释放分配给它的内存吗?

例如. -

public void drawFigure(){

    Paint paint = new Paint();
    paint.setSomeProperty();

    canvas.drawLine(startPoint, finishPoint, paint);

}
Run Code Online (Sandbox Code Playgroud)

那么在drawFigure方法完成后,paint对象会被销毁吗?与paint = null相同,但我不需要将它设置为null,因为它是一个本地对象.我对吗?

kos*_*osa 6

方法调用完成后,无法保证对象将被GC化,但对象将符合 GC的条件,并且在下一次GC运行时,它可能被收集并且内存将是免费的.

编辑:

是的,你是对的.您无需将其设置为null.将在堆栈上创建局部变量,并在方法完成后立即删除堆栈.因此,绘制将远离内存并且new Paint()对象将在堆上而没有任何引用,这使得上面的对象符合GC的条件.

请参阅由Standford教授撰写的YouTube视频.