


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一 基本知识1.1 性能是什么在性能调优之前,我们首先来了解一下性能是什么?关于性能,我想每个学习过Java的人都能列出几点,甚至可以夸夸其谈。在Java TM Platform Performance一书中,定义了如下五个方面来作为评判性能的标准: 1) 运算的性能哪一个算法的执行性能最好?2) 内存的分配程序运行时需要耗费多少内存?3) 启动的时间程序启动需要多长时间?这在Web项目中的影响不大,但要注意部分程序需要部署或运行在客户端时的情形(比如applet程序)。4) 程序的可伸缩性在压力负载的情况下,程序的性能如何?5) 性能的感知用户在什么情况下会觉得程序的性能不好?以上五个方面,在具体的使用场景可以有选择的去评判。至于这五方面的性能调优,在后续的章节中将会陆续的给以相应的性能调优策略。1.2 调优的规则 我们只需要关心对我们程序有影响,可以察觉到的性能问题,而不是每一个类中的每一个方法我们都需要想方设法的提高性能。如果程序的性能没有达到我们所期 望的要求,我们才需要考虑如何优化性能。同样的,晦涩的代码虽然提高了程序的性能,但同时可能带给我们的是维护的噩梦。我们需要折中的考虑以上两种情况, 使得程序的代码是优美的,并且运行的足够快,达到客户所期望的性能要求。优化代码甚至会导致不良的结果,Donald Knuth(一位比较牛比较有影响的人物,具体是谁,我也忘了,谁知道,可以告诉我一下,谢谢!)曾说过,“Premature optimization is the root of all evil”。在开始性能调优前,需要先指出不优化代码的一些理由。1) 如果优化的代码已经正常工作,优化后可能会引入新的bug;2) 优化代码趋向于使代码更难理解和维护;3) 在一个平台上优化的代码,在另一个平台上可能更糟;4) 花费很多时间在代码的优化上,提高了很少的性能,却导致了晦涩的代码。 确实,在优化前,我们必须认真的考虑是否值得去优化。1.3 调优的步骤一般我们提高应用程序的性能划分为以下几个步骤:1) 明确应用程序的性能指标,怎样才符合期望的性能需求;2) 在目标平台进行测试;3) 如果性能已经达到性能指标,Stop;4) 查找性能瓶颈;5) 修改性能瓶颈;6) 返回到第2步。二 JDK调优2.1 选择合适的JDK版本不同版本的JDK,甚至不同厂家的JDK可能都存在着很大的差异,对于性能优化的程度不同。一般来说,尽可能选择最新发布的稳定的JDK版本。最新的稳定的JDK版本相对以前的JDK版本都会做一些bug的修改和性能的优化工作。2.2 垃圾收集Java堆的优化 垃圾收集就是自动释放不再被程序所使用的对象的过程。当一个对象不再被程序所引用时,它所引用的堆空间可以被回收,以便被后续的新对象所使用。垃圾收集 器必须能够断定哪些对象是不再被引用的,并且能够把它们所占据的堆空间释放出来。如果对象不再被使用,但还有被程序所引用,这时是不能被垃圾收集器所回收 的,此时就是所谓的“内存泄漏”。监控应用程序是否发生了内存泄漏,有一个非常优秀的监控工具推荐给大家Quest公司的JProbe工具,使用它来 观察程序运行期的内存变化,并可产生内存快照,从而分析并定位内存泄漏的确切位置,可以精确定位到源码内。这个工具的使用我在后续的章节中还会做具体介 绍。Java堆是指在程序运行时分配给对象生存的空间。通过-mx/-Xmx和-ms/-Xms来设置起始堆的大小和最大堆的大小。 根据自己JDK的版本和厂家决定使用-mx和-ms或-Xmx和-Xms。Java堆大小决定了垃圾回收的频度和速度,Java堆越大,垃圾回收的频度越 低,速度越慢。同理,Java堆越小,垃圾回收的频度越高,速度越快。要想设置比较理想的参数,还是需要了解一些基础知识的。 Java堆的最大值不能太大,这样会造成系统内存被频繁的交换和分页。所以最大内存必须低于物理内存减去其他应用程序和进程需要的内存。而且堆设置的太 大,造成垃圾回收的时间过长,这样将得不偿失,极大的影响程序的性能。以下是一些经常使用的参数设置:1) 设置-Xms等于-XmX的值;2) 估计内存中存活对象所占的空间的大小,设置-Xms等于此值,-Xmx四倍于此值;3) 设置-Xms等于-Xmx的1/2大小;4) 设置-Xms介于-Xmx的1/10到1/4之间;5) 使用默认的设置。 大家需要根据自己的运行程序的具体使用场景,来确定最适合自己的参数设置。 除了-Xms和-Xmx两个最重要的参数外,还有很多可能会用到的参数,这些参数通常强烈的依赖于垃圾收集的算法,所以可能因为JDK的版本和厂家而有所 不同。但这些参数一般在Web开发中用的比较少,我就不做详细介绍
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版家居装饰一件代发及设计服务合同
- 二零二五年度财务顾问咨询及财务信息系统集成服务协议
- 二零二五年度大理石路沿石石材行业创新研发与技术转移合同
- 二零二五年度马术俱乐部场地租赁及培训服务协议
- 二零二五版商业地产转让合同范本
- 2025版货车车辆买卖与绿色驾驶培训课程合同
- 二零二五年度防腐木地板安装工程承包合同范本
- 二零二五年度废旧电子产品回收与公司买卖合作协议
- 二零二五年度房地产广告代理及推广服务合同范本
- 2025版地产开发项目佣金结算及支付合同
- 商用汽车金融方案
- 医药行业生产成本管控方案
- 上海市崇明区九校2024-2025学年六年级(五四制)上学期期中英语试题
- 预拌混凝土试验室作业指导书(完整版)
- 2024年10月自考00312政治学概论试题及答案含评分参考
- 数学-清华大学中学生标准学术能力诊断性测试2024-2025学年高三上学期10月试卷和答案
- 浪潮集团在线测评题
- 电梯维保服务投标方案(技术方案)
- 2024年江苏高考语文试题(含答案)
- 2024-2025学年人教版八年级上册数学 期末综合能力测评卷
- 毛皮制品加工企业产品质量检测技术考核试卷
评论
0/150
提交评论