Eclipse编译出未使用的局部变量吗?

时间:2013-02-27 02:12:40

标签: java eclipse

请考虑以下代码:

 public String foo(){
      String bar = doStuff();
      return bar;
 }

然后是:

 public void test(){
      doSomeLogicHere();
      String result = foo();
 }

请注意,在test中,我在函数末尾得到一个名为result的字符串。 Eclipse知道这是一个未使用的变量,因为它警告它。我想知道的是,这些字符串是否被编译出来,好像调用只是foo()而不保存返回的字符串?如果我在不使用它时注释掉String result =,我会减少内存消耗还是无关紧要,因为仍然会生成并返回foo()中的字符串?

我在这样写的应用程序中有一些调试逻辑,我想知道是否值得注释掉所有字符串的释放/当我不使用它们时。

2 个答案:

答案 0 :(得分:1)

据我所知,编译器不会自动删除未使用的变量。这通常是优化器/混淆器的工作。

例如,在Android ProGuard中,当您在发布模式下构建Android应用时,会删除所有未使用的变量。

答案 1 :(得分:1)

result赋值在性能方面没有任何区别:JVM中的Java JIT几乎在所有情况下都会优化掉这些未使用的变量。

我个人修复这些事情只是为了保持我的代码清洁和无警告。