• Java代码优化实践


    1.   尽量指定类的final修饰符

    带有final修饰符的类是不可派生的。指定一个类为final,则该类所有方法都是final。Java编译器会会找机会内联所有否final方法,这样能够使性能平均提高50%.

    2.尽量重用对象。

    特别是String对象的使用中,出现字符串链接情况时应用StringBuffer代替。

    3.尽量使用局部变量。

    调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中,速度较快。其他变量买入静态变量、实例变量等,都在堆中创建,速度较慢。另外,依赖于具体的编译器/jvm,局部便利还可能得到进一步的优化。

    4.不要重复初始化变量。

    5.在进行数据库连接,I/O流操作是,记住务必在使用完后关闭连接,释放资源。

    因为这些大对象的操作会造成系统大的开销。

    6.在使用同步机制时,应尽量使用方法同步代替代码块同步。

    7.慎用异常,

    异常对性能不利。抛出异常首先要创建一个新的对象。Throwable接口的构造函数调用名为fillInStackTrace的本地方法,fillInStackTrace()方法检查堆栈,手机调用跟踪信息。只要有异常被抛出,VM就必须调用对堆栈,因为在处理过程中创建了一个新的对象。异常只能用于错误处理,不应该用来控制程序流程。

    8.尽量不要在循环中使用try{}catch{}

    可以在循环外部使用try,,catch包裹。

    9.在StringBuffer时,应初始化StringBuffer的容量。这样可以明显提升性能。

    10.当复制大龄数据时,使用System.arraycopy()

    11.不用new关键词创建类的实例。

    用new关键字创建类 的实例时,构造函数链中的所有构造函数都会别自动调用。按如果一个对象实现了Cloneable接口,我们就可以用它的clone方法,clone方法不会调用任何类的构造函数。

    12.在进行乘法和除法,使用位移操作符会大大提升性能。

    13.尽量使用HashMap和ArrayList,除非必要,否则不推荐使用HashTable和Vetor,后者由于使用同步机制,进而导致了性能的开销。

    14.在遍历Map时,尽量使用entry遍历map,不要使用keyset()方式

    15.尽量使用基本数据类型而不是包装类型。

    16.急事消除过期对象的引用,放置内存泄露。

    17.尽量少使用反射,如果使用反射,第一次使用反射,然后加入缓存。

    18.尽量使用连接池,线程池,对象池、缓存等。

    19.使用日志过程中参数拼接使用占位符

    log.info("o:"+o)//不推荐

    log.info("o:{}",o)//推荐

    20.循环内不要不断创建对象引用

    21.不要对数组使用toString()方法

    22.不要对超出范围的基本数据类型做向下强制转型

    23.把一个基本数据类型转微字符串,基本数据类型.toString()最快,valueOf次之,数据+""最慢

    24.字符串变量和字符串常量equals的时候江字符串常量写在前面

    25.不哟啊江数组声明微public static final

    26.初始化集合,尽量制定大小

    集合每次扩容的瑞安复杂度很有可能时O(n),所以尽量制定已知的集合大小,能减少集合的扩容次数

    27.频繁使用Collection.contains方法,使用Set代替

    28.公有静态变量应该通过类方位。

    29.禁止使用构造方法BigDecimal(double),这样会存在精度损失风险,应该使用BigDecimal.valueOf(double)

    30.枚举的属性字段必须时私有不可变

  • 相关阅读:
    如何查找并启动 Reporting Services 工具
    数据压缩技术
    压缩算法
    新版压缩库发布
    如何处理海量数据
    安卓手机获得Root权限
    安卓项目的源码
    压缩算法1
    ODBC, OLEDB, ADO, ADO.Net的演化简史
    C# 文件压缩与解压(ZIP格式)
  • 原文地址:https://www.cnblogs.com/lovehunterYjj/p/12235683.html
Copyright © 2020-2023  润新知