gpt4 book ai didi

Java - 实例变量或方法局部变量在内存中停留的时间更长

转载 作者:行者123 更新时间:2023-11-29 08:50:19 25 4
gpt4 key购买 nike

我脑子里有一个愚蠢的问题需要澄清。见下面的代码。 Ex 1,我创建了一个 MySecondClass 的实例,并在每个方法中使用它。我不会每次都在方法中创建实例。

但在 Ex 2 中,我在每个方法中创建了 MySecondClass 的实例。

我想知道哪种实现在内存消耗(垃圾回收)和性能方面比较好?

例 1

 public class MyClass {

private MySecondClass var1 = new MySecondClass ();


public void doSomthing(){
var1 .DoMultiply();
}


public void doAnotherThing(){
var1 .DoCount();
}


}

例 2

  public class MyClass {




public void doSomthing(){

MySecondClass mySec = new MySecondClass ();
mySec.DoMultiply();
}


public void doAnotherThing(){

MySecondClass mySec = new MySecondClass ();
mySec.DoCount();

}


}

更新

好的,完成我添加调用者类的代码。

public class Caller {

public static void main(String arg[]){

MyClass myClass = new MyClass (); // first instance
myClass.doSomthing();

MyClass myClass2 = new MyClass (); // second instance
myClass2.doAnotherThing();

}

}

最佳答案

两者具有相同的内存消耗 (O(1)),但后者为垃圾收集器提供了更多工作,因为在每个方法运行后 MySecondClass 都符合垃圾收集条件.

如果您的方法是有效的并且您不能弄乱 var1 (MySecondClass) 的状态,那么第一个选项是有意义的。

所以基本上在没有更多信息的情况下很难判断选择哪一个。

关于Java - 实例变量或方法局部变量在内存中停留的时间更长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23057620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com