zoukankan      html  css  js  c++  java
  • Java性能优化的小细节

    性能优化实现方式(单纯考虑代码层面):

    1.减小代码体积

    2.提高运行效率

    如何做:

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

    带有final修饰的类是不可派生的,该类所有的方法都是final的,java编译器会寻找机会内联所有的final方法,有助于提高运行效率.

    2.尽量复用对象

    对象的创建和维护都会花费java虚拟机的精力,特别是String对象的使用,出现的字符串连接要使用StringBuilder/StringBuffer来替代+号,因此,生成过多的对象将会给虚拟机带来不必要的负担;

    3.及时关闭流

    使用I/O流对数据进行操作是会对系统造成非常大的负担,用完要及时close;

    4.不要在循环语句中进行复杂的处理,以及一些异常处理,应该把这些提取到循环外层

    例如try...catch...应该放在外层

    5.循环内不要进行对象的频繁创建,除非不得已的情况下;

    6.尽量使用HashMap、ArrayList、StringBuilder,除非对线程安全有需求,不推荐使用HashTable、Vector、StringBuffer后三者因为做了同步机制对性能有较高的要求;

    7.清除不需要的会话;

    8.将常量声明为static final,并且用大写来命名

    9.不创建一些不使用的对象,不导入一些不使用的包

    10.程序运行过程中避免使用反射,可以考虑在项目启动的时候通过反射创建对象并且加载到内存中

    发射是java非常强大的一个功能,但是功能强大的同时也意味着效率不高,尤其是Method的invoke方法

    11.使用数据库连接池和线程池

    这样前者可以避免频繁的打开和关闭流,后者可以避免频繁的创建和销毁线程;

    12.使用带缓冲的流进行I/O操作

    13.public修饰的方法中形参最对不要超过3个

    形参过多会导致方法的容错率降低,如果有很多方法可以用实体类包装传递;

    14.在使用equals的时候把常量放在前面

    这样可以避免空指针异常

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

    因为对数组使用只会打印出一串对象地址,而且有可能因为数据引用is为空而导致空指针异常,不过可以对集合使用toString()方法,因为集合的父类AbstractCollections重写了toString()方法;

    16.不要对超出数据范围的基本数据类型做向下的强制类型转换,会导致精度损失

    17.对基本数据类型转换为字符串最快的方式是toString(),其次是String.valueOf(数据),再次是+"" 最慢

    18.对资源的关闭建议分开操作

    例如 

    try{

    stream.close();

    fileInPutStream.close();

    }catch(Exception e){

    .....

    }

    建议修改为

    try{stream.close}catch(Exception e){....} 

    try{fileInPutStream.close()}catch(Exception e){....}

    第一种写法,假如stream流出了问题,抛了异常,那么fileInPutStream就无法关闭,这样代码一多,就有可能引起资源句柄泄露.

    第二种写法虽然麻烦但是无论如何都会关闭,更加安全,当然也可以使用finall来关闭.

  • 相关阅读:
    跳出iframe
    leetcode 225. Implement Stack using Queues
    leetcode 206. Reverse Linked List
    leetcode 205. Isomorphic Strings
    leetcode 203. Remove Linked List Elements
    leetcode 198. House Robber
    leetcode 190. Reverse Bits
    leetcode leetcode 783. Minimum Distance Between BST Nodes
    leetcode 202. Happy Number
    leetcode 389. Find the Difference
  • 原文地址:https://www.cnblogs.com/bin-zhao/p/11641992.html
Copyright © 2011-2022 走看看