• Java程序性能优化技巧


    1、优化循环体
    假设循环次数非常多。循环体内代码处理不好问题就会被放大。

    for(int i=0;i<list.size();i++){}优化为
    int size=list.size();
    for(int i=0;i<size;i++){}
    
    for(int i=0;i<100000;i++){
        if(i%10==9){
        //每循环10次运行一次
    }
    }
    优化为
    for(int i=0;j=10;i<100000;i++;j--){
        if(j==0){
            //每循环10次运行一次
            j=10;
    }
    }

    2、少用new初始化一个实例
    new一个对象耗时往往是局部变量赋值耗时的上千倍,同一时候,当对象生成后系统还要花时间进行垃圾回收和处理。


    比如:
    NewObject object = new NewObject();
    int value;
    if(value>10){
    value = object.getValue();
    }
    优化为
    int value;
    if(value>10){
    NewObject object = new NewObject();
    value = object.getValue();
    }
    3、异常处理
    异常处理对性能不利。抛出异常首先要创建一个新的对象。并进行相关处理,造成系统开销。所以异常应该用在错误的处理情况,不应该用来控制程序流程。
    4、尽量使用局部变量
    局部变量,调用方法时传递的參数以及在创建暂时变量都保存在栈(stack)中,速度较快,其它变量入静态变量、全局变量都在堆(Heap)中创建,速度较慢。


    扩展:栈是由系统分配。速度较快,栈使用的是一级缓存。他们通常都是被调用时处于存储空间中,调用完成马上释放。堆是new分配的内存,easy产生内存碎片,只是使用起来方便。堆存放在二级缓存中,生命周期由虚拟机的垃圾回收算法决定。


    5、尽量降低I/O操作
    6、尽量使用缓存
    BufferedReader取代Reader,BufferedWriter取代Writer,BufferedInputStream取代inputStream来进行I/O处理都能获得性能的提高。
    7、尽量不适用同步。Servlet是多线程假设使用太多的同步就失去了多线程的优势
    8、不能保存太多的信息在HttpSession中。可是当session的存储量非常大时对内存的需求非常高。


    9、消除session。当用户退出系统时手动释放资源

  • 相关阅读:
    [C++] WinAES问题
    MDCC 2014移动开发者大会 小礼品展商活动
    JavaScript模式读书笔记 文章3章 文字和构造
    《深入了解Android:Wi-Fi、NFC和GPS音量》勘误表
    PHP, Python, Node.js 哪个比较适合写爬虫?
    java模拟浏览器包selenium整合了htmlunit,火狐浏览器,IE浏览器,opare浏览器驱
    论文密级
    HttpAsyncClient 做并发长连接的一个实例
    Java利用httpasyncclient进行异步HTTP请求
    使用异步HTTP提升客户端性能(HttpAsyncClient)
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7189969.html
Copyright © 2020-2023  润新知