zoukankan      html  css  js  c++  java
  • JAVa程序性能优化

    JAVa程序性能优化

               懂得计算机性能的都知道,性能反应慢体现为:界面停顿,抖动,反应迟钝等
    性能的表现有:

    1.          执行速度:程序是否迅速,响应时间是否够短
    2.         内存分配:内存分配是否合理,是否过多的消耗内存或者存在泄漏
    3.         启动时间:程序从运行可以正常的处理业务需要花费多长时间
    4.         负载承受能力:当系统压力上升时,系统的执行速度,响应速度的上升曲线是否平缓

    性能的参考指标有:

    •         执行时间:一段代码从开始到结束,所用的时间
    •         CPU时间:函数或者线程CPU的时间
    •         内存分配:程序运行时所占用的内存空间
    •         磁盘吞吐量:描述I/O的使用情况
    •         网络吞吐量:描述网络使用情况
    •         响应时间:系统对某用户行为或者事件作出的响应时间。响应时间越短,性能越好木桶原理与性能瓶颈

                又称短板理论,其核心思想:一个木桶水的多少,并不取决于桶壁最高的木块,而取决与最短的木块,即使有充足的内存和CPU的前提下,如果I/O磁盘低下,那么系统总体会运行很慢,只有提高磁盘I/O性能才能对系统整体性能进行优化,因此磁盘的I/O就是系统的性能瓶颈
      注意:系统的好坏最终取决于最差的组件,必须对其进行优化,而不是对系统表现最好的组件
    最优可能成为系统瓶颈的计算机资源:

    •              磁盘I/O:由于磁盘I/O读写速度比内存慢,如果等磁盘完成I/O完成,那么低效的I/O会拖累整个系统
    •              CPU:对计算机要求高的计算机应用,由于占用时间,不断大量的占用CPU资源,那么对CPU争夺导致性能问题
    •              异常:对JAVA应用来讲,异常捕获和处理是非常消耗资源的,程序高平率进行异常处理
    •              数据库:大部分应用程序离不开数据库,海量数据库读写操作可能费时
    •             锁竞争:对于高并发的程序来说,如果存在激烈竞争,锁竞争会增加线程切换开销
    •             内存:一般来说,只要应用程序设计合理,内存读写速度上不太可能成为性能瓶颈。除非应用提高了内存交换和扫描
    • Amdanhl定律


               它定义了串行系统并行后加速比的设计公式和理论上限
              加速比定义:加速比=优化前系统消耗时/优化系统消耗时
               加速比:优化前耗时与优化后耗时比值。加速比越高,优化越明显
    二、性能调优层次,
                  除了可以从软件架构,JVM 虚拟机层,数据库以及操作系统层面通过进行调优,进而提升性能,设计调优处于调优上层,往往需要软件开发进行之前,由于软件开发设计和架构对软件整体质量有决定因素,设计调优对性能也是最大的。
    设计优化最大特点可以规避某一组件,而非改良组件实现。因此开发人员必须监测频率和资源消耗间取衡

    代码调优 

                   需要熟悉相关语言的API,并正确使用API 或类库,对算法结构灵活使用 LikeList和ArrayList随机访问性能,同样的文件读写实现,使用Stream方式与JAVA NIO方式
    JVM调优
                    对JVM虚拟机进行优化有一定程度的上升JAVA性能。JVM各项参数会直接影响性能。JVM堆大小,垃圾回收机制策略
    数据库调优
                    可以使用JDBC的方式连接数据库,调优分为3部分
                    应用层对SQL语句进行优化
                    对数据库进行优化
                    对数据库软件进行优化
                    优化数据库访问层,使用JDBC进行查询,对大量SQL查询,可以使用preparestatement代替statement,以提高数据库查询数据效率:select语句显查询列名,避免用*
                    数据库进行优化时,主要目的是建立一个具有良好的表结构数据库,例如:用多表级联合查询效率可以合理冗余字段 ,对于大表使用水平切割或者类似ORCal分区表技术,为了提高数据库查询效率,可以建立合理索引

  • 相关阅读:
    python虚拟环境使用
    虚拟化网络进阶管理
    虚拟化进阶管理
    KVM虚拟化
    Xen虚拟化
    Virtualization基础
    Virnish使用
    CentOS配置FTP服务器
    Ajax结合Json进行交互数据(四)
    将 数据库中的结果集转换为json格式(三)
  • 原文地址:https://www.cnblogs.com/yangshuyuan1009/p/9139130.html
Copyright © 2011-2022 走看看