您是否通过将方法内变量声明为属性来保存垃圾收集器的工作?

Ryx*_*uma 3 java memory performance

相比

public class Core {

    public int addToA(int a) {
        int b = a + 2;
        return b;
    }
}
Run Code Online (Sandbox Code Playgroud)

public class Core {

    int b;

    public int addToA(int a) {
        b = a + 2;
        return b;
    }
}
Run Code Online (Sandbox Code Playgroud)

假设该addToA方法被调用很多,你是否通过使用第二个来保存垃圾收集器的工作(并加快你的程序)?

Sot*_*lis 7

局部变量在堆栈上分配.

在这种情况下

public int addToA(int a) {
    int b = a + 2;
    return b;
}
Run Code Online (Sandbox Code Playgroud)

当方法返回,并且b弹出包含的堆栈帧时,它所采用的内存将自动恢复.垃圾收集器不参与.

在这种情况下

public class Core {

    int b;

    public int addToA(int a) {
        b = a + 2;
        return b;
    }
}
Run Code Online (Sandbox Code Playgroud)

b将在为该Core对象保留的堆空间中分配.它只会在收集时被垃圾Core收集.

假设addToA方法被大量调用,你是否通过使用第二个来保存垃圾收集器工作(并加速你的程序)?

据我所知,你不会得到任何东西.

请阅读TJ Crowder的社区维基文章,了解何时何时不做您提出的建议.