- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《《J2EE性能调优》.pdf
J2EE 性能调优
1. 概述
用java 进行开发,尤其是一些大型企业项目,性能调优的工作很重要。本文提供的调
优措施,适用于J2EE 应用开发,Web 服务器以WebLogic 为示例。希望对从事java 开发的同
事能有所帮助。
1.1 调优的原则
在应用系统的设计、开发过程用中,应始终把性能放在考虑的范围内。
确定清晰明确的性能目标是关键。
必须保证调优后的程序运行正确。
性能更大程度是取决于良好的设计,调优技巧只是一个辅助手段。
调优过程是叠代渐进的过程,每次调优的结果要反馈到后续的代码开发中去。
性能调优不能以牺牲代码的可读性和维护性为代价。
1.2 调优的基本步骤
1. 确定清晰的性能目标,并按优先级排列
2. 利用科学的测试工具对应用程序进行测试,并记录测试结果。
3. 把分布式系统拆分成组件:Web 层、业务层、集成层、以及网络传输时间,分别
进行调优。
4. 有系统的科学调优。
遵循一定的程序:测试性能→找出瓶颈→假设造成瓶颈的因素→测试假设是否成立
→修改应用→再次测试性能
确定影响性能的因素:CPU、内存还是IO 。
找出主要的瓶颈,首先解决最容易的,再重复测试。
一次修改一个瓶颈,不要对不需要的地方进行调优
提高CPU 性能:更快的代码,更好的算法,减少短期生存的对象。
提高内存性能:减少或减小长期生存的对象。
提高IO 性能:重新设计应用,减少IO 的交互。
5. 优化完成之后,进行QA 测试。
在代码中记录优化的地方,并对旧代码进行注释。
2. 应用程序部分
在设计应用程序的时候,应该始终把性能放在考虑范围内。本章所提及的一些应用程序
设计中的不当做法,在小数据量,执行次数少的情况下,可能对性能造成的影响并不明显。
但是在大数据量、大量重复执行的生产环境中,对性能却会造成明显的负面影响。
2.1 String 操作
2.1.1 不要使用new String ()
错误:String s = new String(This is silly);
因为构造函数String()里面的参数已经是一个String 实例了。
正确:String s = This is good;
代码执行更快也更优雅。
2.1.2 用StringBuffer.append 来代替String+=累加
先看下面这段常见代码:
String result = ;
for (int i = 0; i 20; i++) {
result += getNextString();
}
javac 会将其编译成类似下面的代码
String result = ;
for (int i=0; i 20; i++) {
result = new StringBuffer ().append(result)
.append(getNextString())
.toString ();
}
从上面的代码可以看到,每次循环都会创建两个对象,一个是 StringBuffer,一个
是toString 产生的String 对象。如果循环次数或数据量很大的时候,这种做法对性能
的影响很明显。应该改成下面的做法:
String result = ;
StringBuffer buffer = new StringBuffer();
for (int i = 0; i 20; i++) {
buffer.append(getNextString());
}
result = buffer.toString();
2.1.3 String str = a + b + c 并不慢
大部分Java 编译器会自动把下面的常量
String str = a + b + c;
编译成
String str = abc;
并不会存在多次创建对象的情况。关于这一点,大家可以查看反编译的class 文件。
但是
String s = a + b + c;
文档评论(0)