欢迎来到天天文库
浏览记录
ID:48654940
大小:111.50 KB
页数:19页
时间:2020-02-27
《java性能的优化.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Java在九十年代中期出现以后,在赢得赞叹的同时,也引来了一些批评。赢得的赞叹主要是Java的跨平台的操作性,即所谓的”WriteOnce,RunAnywhere”.但由于Java的性能和运行效率同C相比,仍然有很大的差距,从而引来了很多的批评。 对于服务器端的应用程序,由于不大涉及到界面设计和程序的频繁重启,Java的性能问题看似不大明显,从而一些Java的技术,如JSP,Servlet,EJB等在服务器端编程方面得到了很大的应用,但实际上,Java的性能问题在服务器端依然存在。下面我将分四个方面来讨论Java的性能和执行效率以及提高Ja
2、va性能的一些方法。 一.关于性能的基本知识 1.性能的定义 在我们讨论怎样提高Java的性能之前,我们需要明白“性能“的真正含义。我们一般定义如下五个方面作为评判性能的标准。 1)运算的性能----哪一个算法的执行性能最好 2)内存的分配----程序需要分配多少内存,运行时的效率和性能最高。 3)启动的时间----程序启动需要多少时间。 4)程序的可伸缩性-----程序在用户负载过重的情况下的表现。 5)性能的认识------用户怎样才能认识到程序的性能。 对于不同的应用程序,对性能的要求也不同。例如,大部
3、分的应用程序在启动时需要较长的时间,从而对启动时间的要求有所降低;服务器端的应用程序通常都分配有较大的内存空间,所以对内存的要求也有所降低。但是,这并不是所这两方面的性能可以被忽略。其次,算法的性能对于那些把商务逻辑运用到事务性操作的应用程序来讲非常重要。总的来讲,对应用程序的要求将决定对各个性能的优先级。 2.怎样才能提高JAVA的性能 提高JAVA的性能,一般考虑如下的四个主要方面: (1)程序设计的方法和模式 一个良好的设计能提高程序的性能,这一点不仅适用于JAVA,也适用也任何的编程语言。因为它充分利用了各种资源,如内存
4、,CPU,高速缓存,对象缓冲池及多线程,从而设计出高性能和可伸缩性强的系统。可编辑word,供参考版! 当然,为了提高程序的性能而改变原来的设计是比较困难的,但是,程序性能的重要性常常要高于设计上带来的变化。因此,在编程开始之前就应该有一个好的设计模型和方法。 (2)JAVA布署的环境。 JAVA布署的环境就是指用来解释和执行JAVA字节码的技术,一般有如下五种。即解释指令技术(InterpreterTechnology),及时编译的技术(JustInTimeCompilierTechnology),适应性优化技术(Adaptive
5、OptimizationTechnology),动态优化,提前编译为机器码的技术(DynamicOptimization,AheadOfTimeTechnology)和编译为机器码的技术(TranslatorTechnology). 这些技术一般都通过优化线程模型,调整堆和栈的大小来优化JAVA的性能。在考虑提高JAVA的性能时,首先要找到影响JAVA性能的瓶颈(BottleNecks),在确认了设计的合理性后,应该调整JAVA布署的环境,通过改变一些参数来提高JAVA应用程序的性能。具体内容见第二节。 (3)JAVA应用程序的实现
6、 当讨论应用程序的性能问题时,大多数的程序员都会考虑程序的代码,这当然是对的,当更重要的是要找到影响程序性能的瓶颈代码。为了找到这些瓶颈代码,我们一般会使用一些辅助的工具,如Jprobe,Optimizit,Vtune以及一些分析的工具如TowerJPerformance等。这些辅助的工具能跟踪应用程序中执行每个函数或方法所消耗掉的时间,从而改善程序的性能。 (4)硬件和操作系统 为了提高JAVA应用程序的性能,而采用跟快的CPU和更多的内存,并认为这是提高程序性能的唯一方法,但事实并非如此。实践经验和事实证明,只有遭到了应用程序性能的
7、瓶颈,从而采取适当得方法,如设计模式,布署的环境,操作系统的调整,才是最有效的。 3.程序中通常的性能瓶颈。 所有的应用程序都存在性能瓶颈,为了提高应用程序的性能,就要尽可能的减少程序的瓶颈。以下是在JAVA程序中经常存在的性能瓶颈。可编辑word,供参考版! 了解了这些瓶颈后,就可以有针对性的减少这些瓶颈,从而提高JAVA应用程序的性能4.提高JAVA程序性能的步骤 为了提高JAVA程序的性能,需要遵循如下的六个步骤。 a)明确对性能的具体要求 在实施一个项目之前,必须要明确该项目对于程序性能的具体要求,如:这
8、个应用程序要支持5000个并发的用户,并且响应时间要在5秒钟之内。但同时也要明白对于性能的要求不应该同对程序的其他要求冲突。 b)了解当前程序的性
此文档下载收益归作者所有