请考虑以下代码:
public String foo(){
String bar = doStuff();
return bar;
}
然后是:
public void test(){
doSomeLogicHere();
String result = foo();
}
请注意,在test
中,我在函数末尾得到一个名为result
的字符串。 Eclipse知道这是一个未使用的变量,因为它警告它。我想知道的是,这些字符串是否被编译出来,好像调用只是foo()
而不保存返回的字符串?如果我在不使用它时注释掉String result =
,我会减少内存消耗还是无关紧要,因为仍然会生成并返回foo()
中的字符串?
我在这样写的应用程序中有一些调试逻辑,我想知道是否值得注释掉所有字符串的释放/当我不使用它们时。
答案 0 :(得分:1)
据我所知,编译器不会自动删除未使用的变量。这通常是优化器/混淆器的工作。
例如,在Android ProGuard中,当您在发布模式下构建Android应用时,会删除所有未使用的变量。
答案 1 :(得分:1)
result
赋值在性能方面没有任何区别:JVM中的Java JIT几乎在所有情况下都会优化掉这些未使用的变量。
我个人修复这些事情只是为了保持我的代码清洁和无警告。