gpt4 book ai didi

java - 重用引用是否有助于 Java 中的 GC

转载 作者:行者123 更新时间:2023-11-29 05:02:54 24 4
gpt4 key购买 nike

我想比较以下两种方法:

// We reuse the previously created object copy
public double first(double[] input, double[] copy) {
copy = Arrays.copyOf(input, input.length);
Arrays.sort(copy);
return copy[0];
}

// We create the object copy inside the method
public double second(double[] input) {
double[] copy = Arrays.copyOf(input, input.length);
Arrays.sort(copy);
return copy[1];
}

first 会比 second 快吗?

垃圾收集器的行为如何?

first 这样的编码对大型项目有什么影响?

如果调用 first(input,null) 会发生什么?

最佳答案

Will first be faster than second?

没有。

How does the garbage collector behave?

它会做它的工作:检查是否有一个对象引用不再被任何对象引用,或者检查是否有两个或更多对象引用只被它们自己引用,所以它会清除它们。

注意这里。在第一种情况下,您正在创建一个新的对象引用并将其存储在 double[] copy 中,并且该引用将在该方法的末尾进行 GC。请记住 Java is pass by value .因此,在这两段代码中,GC 的行为相同:存储在 double[] copy 中的对象引用是方法本地的,因此可能是在执行方法。

What is the impact of coding like first on larger projects?

它主要基于意见。但我会说第二段代码更可取。第一个会导致混淆,因为您要使用新的对象引用重新分配参数的值,尽管项目很大,但您应该避免这种情况。

What happens if calling first(input,null)?

运行代码自己看=/

注意:您不会在这些代码段中重复使用任何对象引用。

关于java - 重用引用是否有助于 Java 中的 GC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31459245/

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