我刚刚为Eclipse 安装了不必要的代码检测器并在我的项目上运行它.我看到很多所谓的"死代码".虽然从组织的角度来看,删除死/不必要的代码是有道理的,但它让我思考:
死代码实际上会阻碍Java应用程序的性能吗?!?!
对我来说,如果代码真的"死",它永远不会被执行,所以我不知道如何删除它(再次,除了组织/内务/代码清理目的)可以提高性能.
Web*_*net 22
它可能会影响一些事情......
它可能会对其有所影响,但是JIT编译器应该能够检测并消除从未使用过的方法。即使不是这样,开销(内存,加载时间,JIT编译时间等)也可能很小。
消除无效方法的更好理由是摆脱“旧东西”,这会使您的代码库更难以阅读,测试和维护。如果您可能会再次需要此代码,则始终可以从版本控制中将其取回。
如果我问用户您想调用哪种方法该怎么办?,将输入作为字符串,然后使用反射?调用该方法。JIT无法说明将使用哪种方法,因此它无法删除任何方法:)。
好点子。因此,它可能不会消除实践中的方法。(但是,如果类加载器知道从何处重新加载方法,则可以...)
死方法会增加JVM中的方法范围。
是的,尽管内存增加的百分比可能微不足道。随之而来的性能降低可能甚至不那么重要。
同样,永远不会调用的方法永远不会进行JIT编译,因此对于典型的实时方法,您可能不会确保50%或更多的内存使用量。
因此,过多的死代码可能导致从方法区域(堆)中卸载类,这可能会影响应用程序性能。我对吗?。
那是极不可能的。一个类只有在没有引用它并且其类加载器也无法访问的情况下才会被卸载。而且,如果确实发生了该类,则无论如何都不会再次使用该类,因此将其卸载是正确的。
| 归档时间: |
|
| 查看次数: |
1864 次 |
| 最近记录: |