知识大全 java性能优化-之一
Posted 知
篇首语:书籍是朋友,虽然没有热情,但是非常忠实。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 java性能优化-之一相关的知识,希望对你有一定的参考价值。
.对象的生成和大小的调整 JAVA程序设计中一个普遍的问题就是没有好好的利用JAVA语言本身提供的函数 从而常常会生成大量的对象(或实例) 由于系统不仅要花时间生成对象 以后可能还需花时间对这些对象进行垃圾回收和处理 因此 生成过多的对象将会给程序的性能带来很大的影响 例 关于String StringBuffer +和append JAVA语言提供了对于String类型变量的操作 但如果使用不当 会给程序的性能带来影响 如下面的语句 String name=new String( HuangWeiFeng ); System out println(name+ is my name ); 看似已经很精简了 其实并非如此 为了生成二进制的代码 要进行如下的步骤和操作 ( ) 生成新的字符串 new String(STR_ ); ( ) 复制该字符串 ( ) 加载字符串常量 HuangWeiFeng (STR_ ); ( ) 调用字符串的构架器(Constructor); ( ) 保存该字符串到数组中(从位置 开始) ( ) 从java io PrintStream类中得到静态的out变量 ( ) 生成新的字符串缓冲变量new StringBuffer(STR_BUF_ ); ( ) 复制该字符串缓冲变量 ( ) 调用字符串缓冲的构架器(Constructor); ( ) 保存该字符串缓冲到数组中(从位置 开始) ( ) 以STR_ 为参数 调用字符串缓冲(StringBuffer)类中的append方法 ( ) 加载字符串常量 is my name (STR_ ); ( ) 以STR_ 为参数 调用字符串缓冲(StringBuffer)类中的append方法 ( ) 对于STR_BUF_ 执行toString命令 ( ) 调用out变量中的println方法 输出结果 由此可以看出 这两行简单的代码 就生成了STR_ STR_ STR_ STR_ 和STR_BUF_ 五个对象变量 这些生成的类的实例一般都存放在堆中 堆要对所有类的超类 类的实例进行初始化 同时还要调用类极其每个超类的构架器 而这些操作都是非常消耗系统资源的 因此 对对象的生成进行限制 是完全有必要的 经修改 上面的代码可以用如下的代码来替换 StringBuffer name=new StringBuffer( HuangWeiFeng ); System out println(name append( is my name ) toString()); 系统将进行如下的操作 ( ) 生成新的字符串缓冲变量new StringBuffer(STR_BUF_ ); ( ) 复制该字符串缓冲变量 ( ) 加载字符串常量 HuangWeiFeng (STR_ ); ( ) 调用字符串缓冲的构架器(Constructor); ( ) 保存该字符串缓冲到数组中(从位置 开始) ( ) 从java io PrintStream类中得到静态的out变量 ( ) 加载STR_BUF_ ; ( ) 加载字符串常量 is my name (STR_ ); ( ) 以STR_ 为参数 调用字符串缓冲(StringBuffer)实例中的append方法 ( ) 对于STR_BUF_ 执行toString命令 (STR_ ) ( )调用out变量中的println方法 输出结果 由此可以看出 经过改进后的代码只生成了四个对象变量 STR_ STR_ STR_ 和STR_BUF_ 你可能觉得少生成一个对象不会对程序的性能有很大的提高 但下面的代码段 的执行速度将是代码段 的 倍 因为代码段 生成了八个对象 而代码段 只生成了四个对象 代码段 String name= new StringBuffer( HuangWeiFeng ); name+= is my ; name+= name ; 代码段 StringBuffer name=new StringBuffer( HuangWeiFeng ); name append( is my ); name append( name ) toString(); 因此 充分的利用JAVA提供的库函数来优化程序 对提高JAVA程序的性能时非常重要的 其注意点主要有如下几方面 ( ) 尽可能的使用静态变量(Static Class Variables) 如果类中的变量不会随他的实例而变化 就可以定义为静态变量 从而使他所有的实例都共享这个变量 例 public class foo SomeObject so=new SomeObject(); 就可以定义为 public class foo static SomeObject so=new SomeObject(); ( ) 不要对已生成的对象作过多的改变 对于一些类(如 String类)来讲 宁愿在重新生成一个新的对象实例 而不应该修改已经生成的对象实例 例 String name= Huang ; name= Wei ; name= Feng ; 上述代码生成了三个String类型的对象实例 而前两个马上就需要系统进行垃圾回收处理 如果要对字符串进行连接的操作 性能将得更差 因为系统将不得为此生成更多得临时变量 如上例 所示 ( ) 生成对象时 要分配给它合理的空间和大小 JAVA中的很多类都有它的默认的空间分配大小 对于StringBuffer类来讲 默认的分配空间大小是 个字符 如果在程序中使用StringBuffer的空间大小不是 个字符 那么就必须进行正确的初始化 ( ) 避免生成不太使用或生命周期短的对象或变量 对于这种情况 因该定义一个对象缓冲池 以为管理一个对象缓冲池的开销要比频繁的生成和回收对象的开销小的多 ( ) 只在对象作用范围内进行初始化 JAVA允许在代码的任何地方定义和初始化对象 这样 就可以只在对象作用的范围内进行初始化 从而节约系统的开销 例 SomeObject so=new SomeObject(); If(x== ) then Foo=so getXX(); 可以修改为 if(x== ) then SomeObject so=new SomeObject(); Foo=so getXX(); cha138/Article/program/Java/Javascript/201311/25287相关参考
Java程序性能优化-优化的一般步骤 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java性能优化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java语言特别强调准确性但可靠
Java程序性能优化-系统优化注意事项 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java程序性能优化-性能的参考指标 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
优化JAVA性能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 添加较小的辅助性函数
Java程序性能优化-看懂程序的性能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-木桶原理与性能瓶颈 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
Java性能的优化(上) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java在九十年代中期出
如何优化JAVA程序开发,提高JAVA性能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 通过使
Java性能优化技巧集锦 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 摘要: =======