Java 性能调优(一)

1、衡量程序性能的标准

(1) 程序响应速度;

(2) 内存占有情况;

2、程序调优措施

(1) 设计调优

设计调优处于所有调优手段 的上层,需要在软件开发之前进行。在软件开发之初,软件架构师就应该评估系统可能存在的各种潜在问题,并给出合理的设计方案。由于软件设计和架构对设计整体质量有决定性影响,所以,设计调优对系统性能的影响也是最大的。

进行设计优化时,设计人员必须熟悉常用的软件设计方法、设计模式、基本性能组件和常用优化思想,并将其有机的集成在软件系统中。

(2) 代码调优

代码优化设计诸多编码技巧,需要开发人员熟悉相关语言的API,并在合适的场景中正确使用相关API或类库。同时,对算法、数据结构的灵活使用,也是代码优化的重要内容。

(3) JVM调优

Java软件总是运行在JVM虚拟机上,因此JVM的各项参数将会直接影响Java程序的性能。如:JVM的堆大小、垃圾回收策略等。

要进行JVM层面的调优,需要开发人员对JVM的运行原理和基本内容结构有一定的了解。如:堆内存的结构、GC的种类等。然后,依据程序的特点,设置合理的JVM启动参数。

(4) 数据库调优

对数据库的调优可以分为3个部分:

  • 在应用层对SQL语句进行优化;
  • 对数据库进行优化;
  • 对数据库软件进行优化;

在应用层优化数据访问,涉及大量的编程技巧。如:当使用JDBC进行查询时,对于大量的拥有相同结构的SQL查询,可以使用PreparedStatement代替Statement,以提高数据库的查询效率;在select语句中,显示指定要查询的列名,避免使用星“*”。

在对数据库进行优化时,主要目的是建立一个具有良好表结构的数据库。如:为了提高多表级联查询效率,可以合理地使用冗余字段;对于大表,可以使用行的水平切割或者类似Oracle分区表的技术;为了提高数据库查询效率,可以建立有效且合理的索引。

对于数据库软件的优化,根据不同的数据库,如Oracle、MySQL或者SQL Server都拥有不同的方式。以Oracle为例,设置合理大小的共享池、缓存缓冲区或者PGA,对Oracle的运行性能都有很大的影响。

(5) 操作系统调优

操作系统的性能对应用系统也有较大的影响。不同类型的操作系统,调优的手段和参数会有所不同。如:在主流UNIX系统中,共享内存段、信号量、共享内容最大值、共享内存最小值等都是可以进行优化的系统资源。此外,如最大文件句柄数、虚拟内存大小、磁盘的块大小等参数都可能对软件的性能产生影响。

3、系统优化注意事项

软件性能优化,如果是通过优化代码的方式,就有可能会引入新的bug,致使之前的完整功能性测试无效。而且,优化后的代码与优化前的代码相比,可能会比较晦涩难懂,从一定程度上影响了系统的可维护性。因此,软件优化需要在软件功能、正确性和可维护性间取得平衡,而不应该过分地追求软件性能。优化后的性能提升幅度可能也不足以让开发者如此费尽心机。因此,在进行软件优化时,需要慎重的评估。

  性能调优必须有明确的目标,不要为了调优而调优。如果当前程序并没有明显的性能问题,盲目地进行调整,其风险可能远远大于收益。

Java 性能优化(一)的更多相关文章

  1. Java 性能优化之 String 篇

    原文:http://www.ibm.com/developerworks/cn/java/j-lo-optmizestring/ Java 性能优化之 String 篇 String 方法用于文本分析 ...

  2. java 性能优化(代码优化)

    参考博文: java 性能优化:35 个小细节,让你提升 java 代码的运行效率

  3. 读书笔记系列之java性能优化权威指南 一 第一章

    主题:java性能优化权威指南 pdf 版本:英文版 Java Performance Tuning 忽略:(0~24页)Performance+Acknowledge 1.Strategies, A ...

  4. [原创]Java性能优化权威指南读书思维导图

    [原创]Java性能优化权威指南读书思维导图 书名:Java性能优化权威指南 原书名:Java performance 作者: (美)Charlie Hunt    Binu John 译者: 柳飞 ...

  5. [原创]Java性能优化权威指南读书思维导图4

    [原创]Java性能优化权威指南读书思维导图4

  6. [原创]Java性能优化权威指南读书思维导图3

    [原创]Java性能优化权威指南读书思维导图3

  7. [原创]Java性能优化权威指南读书思维导图2

    [原创]Java性能优化权威指南读书思维导图2

  8. 《Java性能优化权威指南》

    <Java性能优化权威指南> 基本信息 原书名:Java performance 原出版社: Addison-Wesley Professional 作者: (美)Charlie Hunt ...

  9. 推荐:Java性能优化系列集锦

    Java性能问题一直困扰着广大程序员,由于平台复杂性,要定位问题,找出其根源确实很难.随着10多年Java平台的改进以及新出现的多核多处理器,Java软件的性能和扩展性已经今非昔比了.现代JVM持续演 ...

  10. 大话java性能优化 pdf 下载(全本)

    扫加公众号,回复”大话java性能优化",免费获取此书.

随机推荐

  1. mysql开启日志查询功能

    set global general_log_file='/tmp/general.lg';set global general_log=on; show global variables like ...

  2. vue注意项

    1.通过官方vue生命周期图,总结其中的几个钩子函数 var vm = new Vue({ el: '#app', data: { }, beforeCreate() { alert('组件刚刚被创建 ...

  3. springboot-redis-crda example

    springboot-redis-crda example 1. 从 https://github.com/XLuffyStory/springboot-redis-crdu 拿到源码之后,导入到ST ...

  4. Java中字符串的一些常用操作方法

      package test; public class  maintest {public static void main(String[] args) {String str = "a ...

  5. nginx反向代理中神奇的斜线

    nginx反向代理中神奇的斜线 在进行nginx反向代理配置的时候,location和proxy_pass中的斜线会造成各种困扰,有时候多一个或少一个斜线,就会造成完全不同的结果,所以特地将locat ...

  6. Akka-CQRS(15)- Http标准安全解决方案:OAuth2+JWT

    上期讨论过OAuth2, 是一种身份认证+资源授权使用模式.通过身份认证后发放授权凭证.用户凭授权凭证调用资源.这个凭证就是一种令牌,基本上是一段没什么意义的加密文,或者理解成密钥也可以.服务方通过这 ...

  7. HDU 5763:Another Meaning(字符串匹配)

    http://acm.hdu.edu.cn/showproblem.php?pid=5763 Another Meaning Problem Description   As is known to ...

  8. Codeforces 757B:Bash's Big Day(分解因子+Hash)

    http://codeforces.com/problemset/problem/757/B 题意:给出n个数,求一个最大的集合并且这个集合中的元素gcd的结果不等于1. 思路:一开始把素数表打出来, ...

  9. scrapy基础知识之将item 通过pipeline保存数据到mysql mongoDB:

    pipelines.py class xxPipeline(object): def process_item(self, item, spider): con=pymysql.connect(hos ...

  10. 【RabbitMQ】一文带你搞定RabbitMQ死信队列

    本文口味:爆炒鱿鱼   预计阅读:15分钟 一.说明 RabbitMQ是流行的开源消息队列系统,使用erlang语言开发,由于其社区活跃度高,维护更新较快,性能稳定,深得很多企业的欢心(当然,也包括我 ...