通过引用传递到 setter

Passing by reference into a setter

所以我在我的 Swing 程序上遇到了一些非常大的内存和 CPU 泄漏,我意识到我并没有执行 EDT 上的所有必要内容,而是愚蠢到将所有内容传递给方法,最终意识到由于 "pass-by-value" 规则,我正在复制对象及其 2000 个数组。

我的问题是,对于以下代码:

public class Test {
    Object obj = new Object();
    public void setOBJ(Object obj) {
        this.obj = obj;
    }
}

它是将 this.obj 设置为 obj 的新实例,还是对 obj 的引用?

此外,它是在每个情况下都这样做,还是在某些情况下可能会发生一种或另一种情况?我会尝试这个,但不知道从哪里开始以及它可能发生在什么情况下。

最后,在多线程中,有什么变化吗,还是仍然会以同样的方式通过?老实说只是好奇。

setOBJ(Object obj)Object 的引用分配给 this.obj。它不会创建新实例。

另一方面,每次创建 Test 的新实例时,也会创建一个新的 Object 实例并将其分配给 obj(由于 Object obj = new Object();).

问题是你调用了多少次setOBJ,是否每次都传给它一个新的Object实例。我们无法通过您发布的代码判断。