`
cgaolei
  • 浏览: 58204 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

Java优化编译

阅读更多

今天在CSDN论坛的Java板块看一网友提出的问题:程序中从不使用的变量对程序运行有什么影响。

 

通常我们使用是SUN JDK提供的Java编译器,它在编译时对从不使用变量 (variable is never used)的处理方法是只给出警告。这样在运行程序时,从不使用的变量会占用一定的内存空间。既然变量从未使用,自然不会对产生bug.

 

这个网友的问题回答起来很简单,但我想这个问题中带出了程序代码编译时的优化问题。其实,除了Sun的编译器,还有很多其它的编译器和优化器,可以编译java程序并使用比Sun编译器更多的代码优化,比如:

  • 通过分析去掉程序无用的方法和类,以减小磁盘空间和发布的大小。
  • 去掉无用的代码,如:if(false) abe++;
  • 用更直接高效的代码替换一些代码,以提高整体效率,如:
    • x = x + 5; 替换为 x += 5; 因为+=运算符更快一些,
    • y = x/2; 替换为 y = x >> 1; 每右移一位运算和除以2是相同的,移位运算速度很快。
    • z = x * 4; 替换为 z = x << 2; 每左移一位运算和乘2是相同的,同上。
  • 去掉不使用的变量
  • 去掉class文件中不需要的部分,给编译后的字节码瘦身,如debug信息和代码行号等。
  • 去掉无用的动态类型检测等(动态类型检测会占用代码资源和CPU时间)。如:
    • Integer i = new Integer(3);
    • Integer j = (Integer) i;
             替换为:
    • Integer i = new Integer(3);
    • Integer j = i;
  • 类,方法及变量更名(混淆器)

还有很多其它的优化方案和例子,这里有一个java代码优化器的列表以供参考:

http://www.javaperformancetuning.com/resources.shtml#Optimizers

再推荐本书:
Java™ Performance Tuning, 2nd Edition

By Jack Shirazi

Publisher: O'ReillyPub

Date: January 2003

ISBN: 0-596-00377-3

Pages: 588

分享到:
评论

相关推荐

    java反编译工具

    需要注意的是,反编译工具并不能保证完全恢复原始源代码,尤其是当源代码经过混淆处理或包含特定的优化时。此外,使用反编译工具应尊重版权,仅用于合法的学习和研究目的,避免侵犯他人的知识产权。 总之,Java反...

    咖啡图形的java反编译工具(实用)

    Java反编译是将已编译的Java字节码(.class文件)转换回源代码(.java文件)的过程,这对于理解已加密或混淆的代码、逆向工程库或者研究软件内部工作原理非常有用。这款名为“咖啡图形的java反编译工具”很可能是一...

    JAVA反编译软件(可将class文件反编译为java文件)

    - 反编译得到的源代码可能与原始的`.java`文件有所差异,因为编译器可能会优化代码。 - 注释和变量名通常无法恢复,除非它们在字节码中被保留。 - 反编译不能处理混淆过的代码,混淆代码是为了防止逆向工程而进行...

    java反编译exe

    Java反编译exe主要指的是将Java的字节码(.class文件)转换回源代码(.java文件)的过程。在Java编程中,源代码被编译成字节码,然后由JVM(Java虚拟机)执行。然而,出于调试、学习或者逆向工程的目的,有时我们...

    java反编译程序

    例如,他们可能需要了解如何通过命令行运行工具,如何设置参数以优化反编译结果,以及如何处理反编译过程中可能出现的问题。此外,掌握基本的Java字节码知识也是有帮助的,因为这有助于理解反编译过程和可能的限制。

    jd-gui最好的JAVA反编译工具

    与其他编程语言相比,Java的反编译更为复杂,因为Java的字节码是经过优化的,不直接映射到源代码行。jd-gui通过解析字节码并尝试重构源代码结构,实现了高质量的反编译效果。 最后,“反编译工具”这一标签表明jd-...

    Java反编译工具jui

    5. **逆向工程**: 使用反编译技术进行逆向工程,可以帮助开发者理解软件的工作原理,这对于调试、性能优化和安全分析都至关重要。 6. **版权与法律问题**: 需要注意的是,反编译可能会涉及到版权和许可问题,因此在...

    安卓、Java反编译工具

    在实际操作中,反编译过程可能会遇到各种挑战,如混淆代码、优化过的字节码、加密的资源等。反编译结果可能与原始源代码有所不同,特别是当应用使用了代码混淆技术时,还原出的代码可能会难以阅读和理解。然而,通过...

    JAVA反编译详细步骤

    同时,反编译也可以帮助你分析可能的性能瓶颈,因为看到底层字节码有助于理解编译器是如何优化代码的。 总结起来,Java反编译是一个有价值的技能,可以帮助开发者深入理解Java程序的运行机制。JD-GUI、JAD、...

    JAVA反编译和unicode转字符.rar

    反编译工具并不总是能完全恢复原始的源代码,尤其是当原始代码中包含复杂的优化或者混淆时。不过,对于简单的程序和没有混淆的代码,Jad可以提供很好的反编译效果。 描述中的“反编译后的汉字unicode显示格式转换为...

    jad-java反编译工具eclipse插件

    Java反编译工具是开发人员在处理Java字节码时常用的一种工具,它能够将已编译的.class文件转换回可读的源代码格式,帮助开发者理解或逆向工程现有的Java程序。JAD(Java Decompiler)就是这样一个工具,它提供了方便...

    java反编译包

    3. **代码质量**:反编译的源代码可能与原始源代码有差异,因为编译器会优化一些细节,所以可能需要进一步调整和修复才能正常使用。 总的来说,这个"java反编译包"提供了一套完整的解决方案,帮助开发者理解和学习...

    JAVA反编译工具

    在Java编程中,源代码(.java文件)被编译成字节码(.class文件),这个过程是不可逆的,因为Java的字节码是经过优化的,不包含原始的源代码信息。然而,通过反编译工具,我们可以将这些字节码转换回接近源代码的...

    Java反编译工具用于JAVA程序反编译

    Java反编译工具是开发者和逆向工程爱好者在处理已编译的Java字节码时不可或缺的工具。它们能够将`.class`文件转换回可读的`.java`源代码,帮助用户理解或学习别人的代码,或者在没有源代码的情况下进行调试和修改。...

Global site tag (gtag.js) - Google Analytics