gpt4 book ai didi

java - 将大对象引用而不是小对象传递给方法在处理或内存消耗方面有什么不同吗?

转载 作者:行者123 更新时间:2023-12-04 14:41:39 24 4
gpt4 key购买 nike

我有一个编码困境,我不知道是否有解决它的模式或实践。每当我必须将一些值传递给方法时,大多数时候我会尝试只传递所需的对象,而不是传递由它们组成的对象。我正在和一个 friend 讨论 Java 如何管理堆和内存的东西,但我们没有取得任何进展。

举两个例子:

//Example 1:
private void method doSomething(String s, Car car, boolean isReal){...}
...
String s = myBigObject.getLabels.getMainName();
Car car = myBigObject.getCar();
boolean isReal = myBigObject.isRealCar();

doSomething(s, car, isReal);

//Example 2 - having in mind that BigObject is a really big object and I'll only use those 3 atributes:
private void method doSomething(BigObject bigObject){...}
...

doSomething(myBigObject);

在第二个例子中,在我看来内存会有点浪费,传递一个大对象而不是真正需要它。

最佳答案

由于 Java 仅传递对对象的引用(并复制它们,使其在技术上按值传递),因此传递“大对象”没有内存开销。您的示例 1 实际上使用了更多的内存。

但是,这样做仍然有充分的理由:它消除了依赖性并允许您对 大对象。这可能是也可能不是优势。如果使用 BigObject 参数多次调用它,您将有很多重复的代码来提取这些值,这并不好。

另请注意,您不必将返回值分配给局部变量即可传递它们。你也可以这样做:

doSomething(myBigObject.getLabels().getMainName(), 
myBigObject.getCar(),
myBigObject.isRealCar());

关于java - 将大对象引用而不是小对象传递给方法在处理或内存消耗方面有什么不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16246264/

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