java - 未使用的返回值会怎样?

标签 java garbage-collection return-value

首先我确实调查了这个。我在这里发现了同样的问题,但关于 C++:What happens to unused function return values?

我的兴趣是 Java(尽管线程确实很有趣)。

普遍的共识是没有任何事情真正发生,如果以后有任何事情被覆盖。与 Java 的线程有什么区别吗?

(链接将不胜感激,因为我可以想象可能会发生什么,但想要一些证明和细节。另外,我正在寻找比“它没有设置为变量”更深入的内容)

最佳答案

编译器发现它没有被使用,只是将(返回)堆栈上的值保留为未分配,也就是将其删除。如果您分配它但不使用它,它会一直存在,直到不再使用此引用为止。

请参阅随附的屏幕截图。 Eclipse 和字节码插件。

在L0下,可以看到存储了concat调用的返回值(ASTORE 1)。在 Java 中未使用或分配的 L1 下的相同调用仅使用 POP 处理,也就是从堆栈中删除并消失。

bytecode of return handling

希望对您有所帮助。

关于java - 未使用的返回值会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29063307/

相关文章:

java.util.Date 生成了错误的日期?

java - Android - 动态设置 Intent 附加功能

java - 方法重载时复制方法

multithreading - SMP 并行的内存管理瓶颈

c++ - C++ 调用约定是否受标准约束,因为函数的返回类型不需要在声明 fn 时定义?

java - 返回一个使用最终原语的匿名类。它是如何工作的?

java - 如何在 Java 中使用单选按钮

javascript - es6 中 Map 和 WeakMap 集合的垃圾收集

java - 老一代堆满了,伊甸园和幸存者很低,几乎是空的

c++ - 有没有办法在 C++ 函数体内定义返回类型?