gpt4 book ai didi

java - Java 中的死存储到局部变量

转载 作者:行者123 更新时间:2023-11-30 03:03:01 25 4
gpt4 key购买 nike

局部变量的 bug-dead 存储背后的机制到底是什么??

有人说,当您为变量分配值但不在该代码块/函数中再次使用该变量时,就会发生变量死存储错误(我面临着同类错误)。

void foo(){
String str = someObj.getString();
//some code but str is never used after assignment...
}

但也有一种情况,您倾向于使用值初始化变量,但在随后的指令中,您将变量的值替换为其他值。

List<String> list = new ArrayList<>();
list = someobj.getList();

在这种情况下,永远不会使用 new ArrayList<>() 创建的对象,这也被定义为死存储。

我们在java中有一个垃圾回收机制,它负责照顾这些孤儿对象并负责优化内存。因此,如果垃圾收集可以解决内存泄漏问题,那么为什么我们会出现死存储到局部变量的错误呢?

垃圾收集器可以在这个错误中发挥作用吗?

很明显,GC 无法识别此类死存储!那么,为什么GC无法识别呢?

注意:我认为,开发人员应该避免这种分配不再使用的值的错误。但这仍然是我心中的一个疑问,现在我想要一个结构良好且技术性的答案。.;)

最佳答案

GC 对此完全没问题。这并不是真正的错误。根本就是效率低下:您白白消耗了 CPU 时间和内存。

这也可能表明存在错误:如果您(或您之前的同事)添加了此指令,但稍后没有使用该变量,则可能意味着您忘记了算法中的某些内容。

关于java - Java 中的死存储到局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35457822/

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