Java 性能优化(一)
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 性能优化(一)的更多相关文章
- Java 性能优化之 String 篇
原文:http://www.ibm.com/developerworks/cn/java/j-lo-optmizestring/ Java 性能优化之 String 篇 String 方法用于文本分析 ...
- java 性能优化(代码优化)
参考博文: java 性能优化:35 个小细节,让你提升 java 代码的运行效率
- 读书笔记系列之java性能优化权威指南 一 第一章
主题:java性能优化权威指南 pdf 版本:英文版 Java Performance Tuning 忽略:(0~24页)Performance+Acknowledge 1.Strategies, A ...
- [原创]Java性能优化权威指南读书思维导图
[原创]Java性能优化权威指南读书思维导图 书名:Java性能优化权威指南 原书名:Java performance 作者: (美)Charlie Hunt Binu John 译者: 柳飞 ...
- [原创]Java性能优化权威指南读书思维导图4
[原创]Java性能优化权威指南读书思维导图4
- [原创]Java性能优化权威指南读书思维导图3
[原创]Java性能优化权威指南读书思维导图3
- [原创]Java性能优化权威指南读书思维导图2
[原创]Java性能优化权威指南读书思维导图2
- 《Java性能优化权威指南》
<Java性能优化权威指南> 基本信息 原书名:Java performance 原出版社: Addison-Wesley Professional 作者: (美)Charlie Hunt ...
- 推荐:Java性能优化系列集锦
Java性能问题一直困扰着广大程序员,由于平台复杂性,要定位问题,找出其根源确实很难.随着10多年Java平台的改进以及新出现的多核多处理器,Java软件的性能和扩展性已经今非昔比了.现代JVM持续演 ...
- 大话java性能优化 pdf 下载(全本)
扫加公众号,回复”大话java性能优化",免费获取此书.
随机推荐
- 【通过ssh oracle11g安装】centos6静默安装oracle11g
转载链接:https://blog.csdn.net/u011391839/article/details/76566316 根据实际情况略作调整~ 博主参考了以上链接成功进行安装,列一下自己遇到的坑 ...
- K8s集群部署(二)------ Master节点部署
Master节点要部署三个服务:API Server.Scheduler.Controller Manager. apiserver提供集群管理的REST API接口,包括认证授权.数据校验以 及集群 ...
- 初始化mysql数据库提示缺少Data:dumper模块解决方法
初始化默认数据库运行此命令:/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ 出现错 ...
- python连接 elasticsearch 查询数据,支持分页
使用python连接es并执行最基本的查询 from elasticsearch import Elasticsearch es = Elasticsearch(["localhost:92 ...
- css实现超出文本溢出用省略号代替
一.单行 实现单行文本的溢出显示省略号使用text-overflow:ellipsis属性,但需要配合使用另外两个属性使用才能达到效果. 如下: overflow:hidden; text-overf ...
- scrapy基础知识之 scrapy 三种模拟登录策略:
注意:模拟登陆时,必须保证settings.py里的 COOKIES_ENABLED (Cookies中间件) 处于开启状态 COOKIES_ENABLED = True或 # COOKIES_ENA ...
- 开源FTP/SFTP客户端 FileZilla v3.31.0 绿色便携版
下载地址:点我 基本介绍 FileZilla是一种快速.可信赖的FTP客户端以及服务器端开放源代码程式,具有多种特色.直觉的接口.可控性.有条理的界面和管理多站点的简化方式使得Filezilla客户端 ...
- ADO.NET_包括DataReader和dataSet的使用
今天总结了一下ADO.NET编程中DataReader和dataSet两个比较重要的对象的使用,完成了combobox,listbox,以及fpSpread动态添加数据的测试,对使用sqlComman ...
- springboot项目问题记录one
上面三个方法描述如下: 首先有个业务,我是需要调取第三方一个sdk,然后sdk里面封装的kafka,也就是说,需要用sdk内置的连接kafka去消费消息,然后又有一个类需要实现Message,此Mes ...
- Uncaught Error: Bootstrap dropdown require Popper.js
Bootstrap 要求Popper.js 如果安装了Popper.js还报错,肯定就是Popper的问题 https://cdn.bootcss.com/popper.js/1.12.5/umd/p ...