gpt4 book ai didi

使用线程安全针对局部和全局变量的 Java 垃圾收集

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:12 25 4
gpt4 key购买 nike

以下哪个代码片段在 TIME 方面的垃圾收集效率更高

Class Test{...}

局部变量

private void function(){
Test test = new Test();
....
}

全局变量

Test test = null; 
private void function(){
if(test == null){
test = new Test();
}
}

Let assume function() call frequently

编辑

你们都很好。回答得很好。现在我要说的是

CASE-1 is more GC efficient than CASE-2 but on the other hand CASE-1 is not thread safe. So both having pros and cons

.

最佳答案

在情况 1 中,创建了一个测试,并且在每次调用时都符合 GC 的条件,这会产生大量垃圾。在情况 2 中,它被创建一次并且可能永远不会被 GC。

为什么我们不总是使用选项 2 - 它可能不是线程安全的。让我们用 SimpleDateFormat 和 function() 替换 Test 将需要同步,否则它将无法在多线程应用程序中工作。同步也很昂贵。所以我们需要决定哪个选项是每次新对象或同步更好。

关于使用线程安全针对局部和全局变量的 Java 垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28893109/

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