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性能优化",免费获取此书.
随机推荐
- Java 自定义异常(转载)
1.异常的分类 1. 非运行时异常(Checked Exception) Java中凡是继承自Exception但不是继承自RuntimeException的类都是非运行时异常. 2. 运行时异常(R ...
- php程序守护进程
php命令程序实习守护进程2种方式: 1.使用nohup nohup php myprog.php > log.txt & 2.使用程序 function daemonize() { $ ...
- vSphere 5.5.0 U1配置问题:主机的快速统计信息不是最新的(转载)
最近公司新购置了几台DELL服务器用来上桌面虚拟化,前期搭建测试环境进行功能验证,底层自然而然的选择VMware ESXi,当前最新版本为ESXi 5.5.0 U1,单独数据库安装,相对5.1来说,5 ...
- MagicBook屏幕频闪解决方案(Windows、MacOS)
对于已经看到这篇文章的小伙伴们,就不解释何为PWM调光频闪了. MagicBook笔记本性价比高,但屏幕素质确实很一般,我们人眼看不出来的频闪,实际对眼睛损害很大,如图(需要设置快门参数,如1/400 ...
- yarn or npm 版本固化如何选择
前言 作为前端开发者,npm这个包管理工具的重要性显而易见.优点不再表述,但一些缺点是为使用者诟病比较多的:速度慢.版本控制.下面主要讨论下npm的版本固化问题,即lock文件. npm语义化版本管理 ...
- ElasticStack学习(四):ElasticSearch文档使用与操作
一.文档的CRUD介绍 ElasticSearch中存在五种操作,分别如下: 1.Index 该操作表示:如果文档的ID不存在,则创建新的文档.若有相同的ID,先删除现有文档,然后再创建新的文档,同时 ...
- 《Predict Anchor Links across Social Networks via an Embedding Approach》阅读笔记
基本信息 文献:Predict Anchor Links across Social Networks via an Embedding Approach 时间:2016 期刊:IJCAI 引言 预测 ...
- 1.Actor编写-ESGrain与ESRepGrain
ESGrain 生命周期 Ray中ESGrain继承自Grain扩展了Grain的生命周期.Grain的生命周期参见文档附录:1-Grain生命周期-译注.md ESGrain重写了Grain的OnA ...
- RDIFramework.NET框架基于Quartz.Net实现任务调度详解及效果展示
在上一篇Quartz.Net实现作业定时调度详解,我们通过实例代码详细讲解与演示了基于Quartz.NET开发的详细方法.本篇我们主要讲述基于RDIFramework.NET框架整合Quartz.NE ...
- CitusDB Multi-node Install and Test
Multi-node setup on CentOS 参考官网:https://docs.citusdata.com/en/v6.2/installation/production_rhel.html ...