Java - 可以对执行方法的对象进行垃圾回收吗?

Soc*_*cob 18 java garbage-collection program-entry-point object

在Java中,我做了类似下面的事情而没有考虑太多:

public class Main {

    public void run() {
        // ...
    }

    public static void main(String[] args) {
        new Main().run();
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,最近我不确定这样做是否安全.毕竟,在Main创建对象之后没有对该对象的this引用(好吧,有引用,但这会计数吗?),所以看起来垃圾收集器可能会在执行过程中删除对象的危险一些东西.所以也许这个main方法应该是这样的:

    public static void main(String[] args) {
        Main m = new Main();
        m.run();
    }
Run Code Online (Sandbox Code Playgroud)

现在,我敢肯定的是,第一个版本的作品,我从来没有任何问题,但我想知道,如果它是安全的.所有的情况下做的(不仅是在一个特定的JVM,但最好根据语言规范对此类案例的说法).

duf*_*ymo 29

如果正在执行对象方法,则意味着某人拥有该引用.所以不,在执行方法时,对象不能是GC'd.

  • 你仍然有这个参考.这算作普通参考. (5认同)