《《J2EE性能调优》.pdf

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

llww + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档