4

考虑以下代码:

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

然后后来:

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

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

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

4

2 回答 2

1

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

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

于 2013-02-27T02:20:08.460 回答
1

result赋值不会对性能产生任何影响:JVM 中的 Java JIT 在几乎所有情况下都会优化掉这些未使用的变量。

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

于 2013-02-27T02:24:27.517 回答