`

无意中提高你的Java程序的性能

    博客分类:
  • Java
阅读更多

本文系 www.javady.com网站原创,转载请标明出处

1、 对于常用工具类的方法,需要关注同步问题

2、 对于不能确认被其它代码如何调用的方法或者可能被其它代码频繁调用的方法,需要关注同步问题


3、 对于常量字符串,不要通过new方式来创建


4、 对于常量字符串之间的拼接,请使用“+”;对于字符串变量(不能在编译期间确定其具体值的字符串对象)之间的拼接,请使用StringBuffer;在JDK1.5或更新的版本中,若字符串拼接发生在单线程环境,可以使用StringBuilder


5、 在使用StringBuffer进行字符串操作时,请尽量设定初始容量大小;也尽量避免通过String/CharSequence对象来构建StringBuffer对象


6、 当查找字符串时,如果不需要支持正则表达式请使用indexOf(…)实现查找;当需要支持正则表达式时,如果需要频繁的进行查找匹配,请直接使用正则表达式工具类实现查找


7、 对于简单的字符串分割,请尽量使用自己定义的公用方法或StringTokenizer


8、 当需要对报文等文本字符串进行分析处理时,请加强检视,注意算法实现的优化


9、 在实现业务处理流程的过程中,需要考虑临时对象引起的性能问题,精简业务处理流程,减少不必要的中间环节


10、 对象的创建应尽量按需创建,而不是提前创建


11、 对象的创建应尽量在for、while等循环外面创建,在循环里面进行重用


12、对于高频度使用的对象,需要进行单独优化处理给以重用


13、在代码开发中,需要根据应用场景合理选择集合框架中的集合类,应用场景可按单线程和多线程来划分,也可按频繁插入、随机提取等具体操作场景来划分


14、对于热点代码,可以采用特定的集合类来提供系统性能,特定集合类可以是自己开发,也可以直接采用Trove这样的第三方开源类库


15、当需要在方法之间传递多个属性值时,从性能角度考虑,应优先采用结构体,而非ArrayList或Vector等集合类


16、进行IO读写操作时,必须使用缓冲机制


17、从性能角度考虑,应尽量优先使用字节IO进行读写,而避免用字符IO进行读写


18、对于数组、集合的拷贝、查找、排序等操作,如果是一般应用,可以优先采用java.util.Arrays和java.util.Collections中提供的工具方法;但是对于热点代码,最好是参考java API中的方法实现,自己开发特定的排序等方法,以减少临时对象的创建。


19、对于数组的拷贝,请使用System.arraycopy(…)方法


20、如果往框架类或者系统类对象中添加了某个对象,那么当该对象不再使用时,必须及时清除


21、当使用自己定义的类装载器去装载类时,在被装载的类不再使用后,需要保证该类装载器可以被垃圾回收


22、尽量不要将一些大的对象(对象本身比较大或其引用的对象比较多)定义成静态的


23、如果在一个对象中创建了一个线程,当对象不再使用时,必须关闭该线程


24、在JFrame、JDialog等窗口对象中,尽量处理窗口关闭事件并释放资源


25、在IO操作中,必须定义finally代码段,并在该代码段中执行IO关闭操作[align=left][/align]

 

分享到:
评论

相关推荐

    生成java可执行文件

    本文主要告诉大家如何实现两个功能:①让java程序(class文件)像exe文件一样方便运行;...无意中发现了一个法子,简单而又实用,甚至不需要你去在计算机上设置环境变量等种种繁琐操作。特以此分享。

    java烟花小程序可在无java环境运行

    聊天时无意知道了一位女性朋友想看烟花,奈何不能陪她看。那就搞一个这样的小程序。从我得到的反馈来看,还不错。只要运行*.bat文件就行,64位的

    ADO.NET 应用程序中实现和获得最佳性能

    本文为您提供了在 Microsoft ADO.NET 应用程序中实现和获得最佳性能、可伸缩性以及功能的最佳解决方案;同时也讲述了使用 ADO.NET 中可用对象的最佳实践;并提出一些有助于优化 ADO.NET 应用程序设计的建议。

    Java俄罗斯方块游戏源代码

    无意中翻出了几年前上学时写的一个俄罗斯方块的游戏,记得是个周末写的,从头到尾用了两天。整个程序完全使用java画图,没有图片资料。声音文件来自互联网。 现公开其源代码,供初学者学习。 源代码可自由传播和...

    无意中收集到的源代码 无意中收集到的源代码

    无意中收集到的源代码 无意中收集到的源代码

    Java零基础离线版进阶大牛.html

    无意中淘到的Java学习资料,并不清楚作者是谁,作者要是看到了,请联系我。这个学习资料对于Java学习有着打基础的作用,请仔细认真的看看。一位学习过Java的学生的恳求

    Java安全性编程实例(徐迎晓)

    这是Java安全中确定身份的主要技术。其中第五章介绍了数字证书的创建、签发、验证和维护等,第六章介绍了多个证书组成的证书链(CertPath)的创建和验证。 # 第七章 # 解决的主要问题——数据安全传输,服务器和...

    Java9API中文版.zip

    每一个公共类都可以被类路径之下任何其它的公共类所访问到, 这样就会导致无意中使用了并不想被公开访问的 API。此外,类路径本身也存在问题: 你怎么知晓所有需要的 JAR 都已经有了, 或者是不是会有重复的项呢? 模块...

    java版植物大战僵尸源码

    java版的植物大战僵尸,不是j2me版的,用eclipse可以运行。无意中网上找到的,对我没什么用,分享给大家

    达内JAVA培训课件

    达内PPT授课课件完整版,很不错的哦,当年学习时跟老师商量半天才给的,今天无意中找到

    Java俄罗斯方块游戏源代码(无需资源分)

    无意中翻出了几年前上学时写的一个俄罗斯方块的游戏,记得是个周末写的,从头到尾用了两天。整个程序完全使用java画图,没有图片资料。声音文件来自互联网。 现公开其源代码,供初学者学习。 源代码可自由传播和...

    爱眼护眼小程序 整天面对电脑者必备

    我无意中发现的小程序! 爱眼护眼小程序 整天面对电脑者必备

    高性能html5 高清版本(含英文原版、中文部分以及读书笔记)

    《高性能HTML5》中总结了许多实践经验、关键技巧,并提供了丰富的示例,作者有意无意地将软件工程以及前端开发技术之道隐藏于朴实的描述中。 通过学习《高性能HTML5》,读者能够掌握如何创建自己的高性能网站。《高...

    高性能HTML5

    《高性能html5》中总结了许多实践经验、关键技巧,并提供了丰富的示例,作者有意无意地将软件工程以及前端开发技术之道隐藏于朴实的描述中。 通过学习《高性能html5》,读者能够掌握如何创建自己的高性能网站。《高...

    JAVA实现的动态炫酷壁纸效果jar包

    无意之间翻出了大一时候学JAVA GUI Swing 时候的java代码,发现了一个有趣的代码,就是用java代码跑出一个炫酷的壁纸效果的动图,跑了一下,感慨颇多,当时就是因为做这个,查了好久的资料,最终将其写出来,当时还...

    c 程序设计伴侣

    2011 年初,我在书店无意中看到《C 程序设计》已经出到了第四版。并且在书的封面上印着 1100 万册的销量数字,视觉效果十分震撼。我想这大约意味着有 1100 万人已经读过了这本书,其中想必会 有一些和我一样在读书中...

    无意中的雪仗作文.doc

    无意中的雪仗作文.doc

    面向对象程序设计的历史与发展.doc

    这种结构很容易造成全局数据在无意 中被其他函数改动,因而程序的正确性不易保证。面向对象程序设计的出发点之一就是 弥补面向过程程序设计中的一些缺点:对象是程序的基本元素,它将数据和操作紧密地 连结在一起,...

    JNI:Java与C++的美好结合 视频地址

    【课程介绍】 这课程,我们的主题就是...这样可以增加C函数的稳定度,包括它的通用性,可适应于更多更多的环境里使用,表示它可以很稳定的适用于不同的run-time的动态环境上,都不会让C函数无意中爆掉或产生其它问题。

    java多线程中测试同步的小程序

    这是我做的一个很简单的多线程同步程序,目的是为了测试多线程编程下如何使用同步(synchronized)防止产生竞争共享资源的错误状态,从中得到的心得是:一定要将你所共享的变量封装在一个类中,将所有有关该变量的...

Global site tag (gtag.js) - Google Analytics