java - java中本地对象的内存管理

标签 java memory-management garbage-collection

如果我在一个类中有一个方法,我正在该方法中创建一个对象 那么该对象是否会被销毁并释放分配给它的内存 一旦方法完成?

例如。 -

public void drawFigure(){

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

    canvas.drawLine(startPoint, finishPoint, paint);

}

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

最佳答案

不能保证对象会在方法调用完成后立即被 GC,但对象将变得符合条件 GC 并且在下一次 GC 运行时它可能会被收集并且内存将被释放。

编辑:

是的,你是对的。您不需要将其设置为 null。局部变量将在堆栈上创建,一旦方法完成,堆栈将被删除。因此,paint 将从内存中消失,new Paint() 对象将在没有任何引用的情况下位于堆上,这使得上述对象符合 GC 条件。

查看此 youtube video by Standford professor .

关于java - java中本地对象的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14352543/

相关文章:

java - JPA 2 中的映射 Map<Entity, Enum>

Java:根据特定属性创建包含来自两个给定列表的所有不相交元素的列表的正确方法?

ios - Swift 2 - 切换选项卡时出现 EXC_BAD_ACCES

c# - LINQ 和内存分配

java - 使用多个线程是不好的做法吗? (通过 SwingWorkers)

java - 有没有可以读写plist文件(包括二进制格式)的Java库?

java - 在使用 Helidon Microprofile Server 时,我们可以使用 Spring 代替 CDI 和 Weld 吗?

c++ - _heapwalk报告_HEAPBADNODE,导致断点或无限循环

ruby - Ruby 2 中的垃圾收集,忽略方法的返回值会怎样?

ruby - 为什么这个未使用的字符串没有被垃圾收集?