关闭

关闭

封号提示

内容

首页 JAVA代码优化总结.docx

JAVA代码优化总结.docx

JAVA代码优化总结.docx

上传者: 字体中你的样子 2017-03-20 评分 5 0 113 15 513 暂无简介 简介 举报

简介:本文档为《JAVA代码优化总结docx》,可适用于IT/计算机领域,主题内容包含JAVA代码优化总结  通过使用一些辅助性工具来找到程序中的瓶颈然后就可以对瓶颈部分的代码进行优化。一般有两种方案:即优化代码或更改设计方法。我们一符等。

JAVA代码优化总结  通过使用一些辅助性工具来找到程序中的瓶颈然后就可以对瓶颈部分的代码进行优化。一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码从而提高性能。  下面将提供一些在JAVA程序的设计和编码中为了能够提高JAVA程序的性能而经常采用的一些方法和技巧。  对象的生成和大小的调整。  JAVA程序设计中一个普遍的问题就是没有好好的利用JAVA语言本身提供的函数从而常常会生成大量的对象(或实例)。由于系统不仅要花时间生成对象以后可能还需花时间对这些对象进行垃圾回收和处理。因此生成过多的对象将会给程序的性能带来很大的影响。  例:关于String,StringBuffer和append  JAVA语言提供了对于String类型变量的操作。但如果使用不当会给程序的性能带来影响。如下面的语句:  Stringname=newString("HuangWeiFeng")  Systemoutprintln(name"ismyname")  看似已经很精简了其实并非如此。为了生成二进制的代码要进行如下的步骤和操作:  ()生成新的字符串newString(STR)  ()复制该字符串  ()加载字符串常量"HuangWeiFeng"(STR)  ()调用字符串的构架器(Constructor)  ()保存该字符串到数组中(从位置开始)  ()从ioPrintStream类中得到静态的out变量  ()生成新的字符串缓冲变量newStringBuffer(STRBUF)  ()复制该字符串缓冲变量  ()调用字符串缓冲的构架器(Constructor)  ()保存该字符串缓冲到数组中(从位置开始)  ()以STR为参数调用字符串缓冲(StringBuffer)类中的append方法  ()加载字符串常量"ismyname"(STR)  ()以STR为参数调用字符串缓冲(StringBuffer)类中的append方法  ()对于STRBUF执行toString命令  ()调用out变量中的println方法输出结果。  由此可以看出这两行简单的代码就生成了STR,STR,STR,STR和STRBUF五个对象变量。这些生成的类的实例一般都存放在堆中。堆要对所有类的超类类的实例进行初始化同时还要调用类极其每个超类的构架器。而这些操作都是非常消耗系统资源的。因此对对象的生成进行限制是完全有必要的。  经修改上面的代码可以用如下的代码来替换。  StringBuffername=newStringBuffer("HuangWeiFeng")  Systemoutprintln(nameappend("ismyname")toString())  系统将进行如下的操作:  ()生成新的字符串缓冲变量newStringBuffer(STRBUF)  ()复制该字符串缓冲变量  ()加载字符串常量"HuangWeiFeng"(STR)  ()调用字符串缓冲的构架器(Constructor)  ()保存该字符串缓冲到数组中(从位置开始)  ()从javaioPrintStream类中得到静态的out变量  ()加载STRBUF  ()加载字符串常量"ismyname"(STR)  ()以STR为参数调用字符串缓冲(StringBuffer)实例中的append方法  ()对于STRBUF执行toString命令(STR)  ()调用out变量中的println方法输出结果。  由此可以看出经过改进后的代码只生成了四个对象变量:STR,STR,STR和STRBUF你可能觉得少生成一个对象不会对程序的性能有很大的提高。但下面的代码段的执行速度将是代码段的倍。因为代码段生成了八个对象而代码段只生成了四个对象。  代码段:  Stringname=newStringBuffer("HuangWeiFeng")  name="ismy"  name="name"  代码段:  StringBuffername=newStringBuffer("HuangWeiFeng")  nameappend("ismy")  nameappend("name")toString()  因此充分的利用JAVA提供的库函数来优化程序对提高JAVA程序的性能时非常重要的其注意点主要有如下几方面  ()尽可能的使用静态变量(StaticClassVariables)  如果类中的变量不会随他的实例而变化就可以定义为静态变量从而使他所有的实例都共享这个变量。  例:  publicclassfoo  {  SomeObjectso=newSomeObject()  }  就可以定义为:  publicclassfoo  {  staticSomeObjectso=newSomeObject()  }  ()不要对已生成的对象作过多的改变。  对于一些类(如:String类)来讲宁愿在重新生成一个新的对象实例而不应该修改已经生成的对象实例。  例:  Stringname="Huang"  name="Wei"  name="Feng"  上述代码生成了三个String类型的对象实例。而前两个马上就需要系统进行垃圾回收处理。如果要对字符串进行连接的操作性能将得更差因为系统将不得为此生成更多得临时变量如上例所示。  ()生成对象时要分配给它合理的空间和大小JAVA中的很多类都有它的默认的空间分配大小。对于StringBuffer类来讲默认的分配空间大小是个字符。如果在程序中使用StringBuffer的空间大小不是个字符那么就必须进行正确的初始化。  ()避免生成不太使用或生命周期短的对象或变量。对于这种情况因该定义一个对象缓冲池。以为管理一个对象缓冲池的开销要比频繁的生成和回收对象的开销小的多。  ()只在对象作用范围内进行初始化。JAVA允许在代码的任何地方定义和初始化对象。这样就可以只在对象作用的范围内进行初始化。从而节约系统的开销。  例:  SomeObjectso=newSomeObject()  If(x==)then  {  Foo=sogetXX()  }  可以修改为:  if(x==)then  {  SomeObjectso=newSomeObject()  Foo=sogetXX()  }  异常(Exceptions)  JAVA语言中提供了trycatch来发方便用户捕捉异常进行异常的处理。但是如果使用不当也会给JAVA程序的性能带来影响。因此要注意以下两点:  ()避免对应用程序的逻辑使用trycatch  如果可以用if,while等逻辑语句来处理那么就尽可能的不用trycatch语句。  ()重用异常  在必须要进行异常的处理时要尽可能的重用已经存在的异常对象。以为在异常的处理中生成一个异常对象要消耗掉大部分的时间。

类似资料

该用户的其他资料

阿芙感谢信内容.doc

小麦返青肥施用方法.doc

(DOC)-会计专业毕业设计外文翻译--盈余管理、收益和收入操纵质量评价-会计审计.doc

内蒙古工行柜员合同工招聘笔试真题和答案(验证真实).doc

10 唐诗四首——观刈麦教案初中语文长春版七年级下册_7.doc

职业精品

精彩专题

上传我的资料

精选资料

热门资料排行换一换

  • 20.阿毗达摩俱舍论颂讲记(上)…

  • 《古希腊哲学史纲》.pdf

  • 民国兴义县志 雍正安南县志 光绪…

  • 平坝县志(一).pdf

  • 光绪镇宁州志 民国镇宁县志.pdf

  • [日]中根千枝《适应的条件》.p…

  • 老曹收藏-胡乔木文集1.pdf

  • 老曹收藏-八大文献.pdf

  • 人力资源部年度工作总结与计划.p…

  • 资料评价:

    / 5
    所需积分:0 立即下载

    意见
    反馈

    返回
    顶部