作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
以下哪个代码片段在 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/
我是一名优秀的程序员,十分优秀!