每一种语言都有其自身的特点,只有掌握了其自身的特点,才能用它编写出高效的程序。下面就我个人实践所知谈谈javaSE方面的性能问题,javaEE方面的性能暂不讨论,要是时间可以再写一javaEE方面的性能问题的帖子。
1,尽量不要使用+号来连接字符串,至少不要在隔行中使用+来连接字符串。因为有的java虚拟机可能对字符串连接+做了性能优化,在都同行的+字符串连接,转化为StringBuffer的append()方法来连接,所以在同行使用+和使用StringBuffer的append 来做连接性能上差不多。
2, 对小数据int的Integer封装,尽量的使用Integer.valueOf()创建,而不要使用new来创建。因为Integer类缓存了从-128到256个 状态的Integer。
3, 对Boolean类,要用valueOf()或使用Boolean.TRUE或Boolean.FALSE来创建对象。我个人觉得对Boolean类用private构造函数,可能就会避免不好的使用Boolean类了。
4, 在设计类时应尽可能地避免在类的默认构造函数中创建,初始化大量的对象。
5, 合理的申请数组空间,如果数组中所保存的元素占用内存空间较大或数组本身长度较长的情况,我们釆用可以釆用软引用的技术来引用数组,以“提醒”JVM及时的回收垃圾内存,维护系统的稳定性。
6, 避免创建重复的对象,我们在编写一个方法的时候应该先考虑方法里的局部对象域能否改为private static final,从而避免创建重复的对象。
7, 把try/catch块放入循环体内,会极大的影响性能,如果编译JIT被关闭或者你所使用的一个不带JIT的JVM,性能会将下降21%之多!
8,StringBuffer的构造器会创建一个默认大小(通常是16)的字符数组。在使用中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,并将原先的数组复制过来,再丢弃旧的数组。在大多数情况下,你可以在创建StringBuffer的时候指定大小,这样就避免了在容量不够的时候自动增长,以提高性能。
9, 使用Java NIO提高服务端程序的性能。
10,考虑用静态工厂方法替代构造函数。
11,在对大量的数组拷贝时,可以考虑用Arrays.copyOf()来拷贝。
12, 在并发的情况下,要合理的选择同步的策略,应该谨慎的控制synchronized块的大小,不可以将一个操作分解到多个synchronized 但也要尽量地从synchronized块中分离耗时的且不影响并发的操作。
13,要合理的选择集合框架,例如:ArrayList和LinkedList在某些不同的场合,其性能相差很大。对要做大量的插入时, LinkedList 的性能比ArrayList的性能好。对要做大量随机查找的时候用ArrayList的性能比用LinkedList的性能好。还有在不需要并发操作的情况下,选择非线程安全的集合比线程安全的集合要好。如在非线程安全的要求下,选择ArrayList要比Vector好。
14,不要在循环语句块中调用length()方法做为循环结束的条件。
15,如果字符串特别长,不要釆用charAt()一一的获取特定位置的字符,而应该调用toCharArray()方法转化为字符数组,然后通过数组 索引值获取指定位置的字符。
16,如果是想把数据封装成Double类型的,不要这样使用new Double("1.23"),而要应这样使用new Double(1.23),虽然二者都没有语法 的错误,也都能达到预期的结果,但其性能有着很大的差异。
17, 应尽量的通过缓冲流类来提高I/O操作效率,但也要合理的选择缓冲大小 。
呵呵,好了,今天就写到这吧,以后要是有时间再继续写。小弟我初学java,不对之地,欢迎大家指正,补遗。<lfn>
分享到:
相关推荐
《Java高效设计中文版》是一本专为Java程序员和开发者准备的书籍教程,旨在帮助读者提升在Java编程中的效率和设计能力。这本书深入探讨了如何利用Java语言特性、设计模式以及最佳实践来优化代码,提高软件开发的效率...
JAVA高效编程指南 1 创建和销毁对象 2 对象定义 3 类和接口 4 结构的替代
Java高效设计是指在使用Java语言进行编程和开发时,通过合理的设计方法和原则来提高代码的效率、可维护性和可扩展性。这通常涉及到对Java语言特性的深入理解和合理运用,以及对设计模式、数据结构、算法等计算机科学...
该项目是一款基于Disruptor框架和Hazelcast/Ignite技术的Java高效交易所撮合引擎设计源码,共包含54个文件,包括39个Java源文件、5个XML配置文件、3个YAML配置文件、2个Markdown文件以及1个Git忽略文件。该引擎采用...
在“mysql优化与java高效开发.zip”这个压缩包中,我们找到了一系列的资源,主要集中在两个核心主题上:MySQL数据库的优化以及Java开发中的高效代码实践。这些资料对于提升Java开发者在实际项目中的性能调优能力,...
Java高效排序算法前五位,代码实现;
[毕业设计]JAVA高效文件传输系统设计与实现(源代码+论文)
[毕业设计]Java高效音像租赁服务系统设计与开发(源代码+论文)
[毕业设计]JAVA 高效邮件收发平台设计与开发(Javamail技术)(源代码+论文)
[毕业设计]JAVA高效办公自动化解决方案设计与实现(论文+源代码+外文翻译)
在Java编程中,复制文件的方法有很多,而且经常要用到。我以前一直是缓冲输入输出流来实现的(绝大多数人都是如此),近来在研究JDK文档时发现,用文件通道(FileChannel)来实现文件复制竟然比用老方法快了近三分之...
高效敏感词过滤JAVA实现(DFA算法) 5000字2ms 节点 + 2进制标识(节省空间/提高查询效率) 附源码、注释,附带专业敏感词库(3396个敏感词) 看得上就拿去用,替换下一两处util方法、改个路径即可 不求什么,...
1、集成开发环境 2 2、测试 2 3、集成 3 4、应用服务器 3 5、Web应用测试 3 6、质量分析 4 7、版本控制 4 8、持续集成 4 9、Java 应用分析 5 10、代码覆盖工具 5 11、Bug跟踪 5 ...14、 java工具类 6
1.高效简单池化的HttpClient工具类,提供单元测试用列。 2.支持基于SpringBoot 2.1.x的自动装载模块,引用依赖即可使用。 3.公司几十个项目都使用该工具类访问第三方的Http/Https+json协议接口。 4.经过上市公司多个...
Java 高效读取大文件实例分析 在 Java 中高效读取大文件是一个非常重要的知识点,特别是在处理大规模数据的时候。今天,我们将讨论如何高效地读取大文件,避免出现OutOfMemoryError 异常。 概述 ----- 在 Java 中...
将java开发过程中连接数据库的过程封装,简化dao层的代码,可以大大提高开发效率。本工具主要遵循"既有默认规则,又可灵活配置"的原则,通过编写通用的basedao,实现通用的数据库连接过程,通过配置文件实现连接指定...
本教程将演示如何用Java高效地读取大文件。这篇文章是Baeldung (http://www.baeldung.com/) 上“Java——回归基础”系列教程的一部分。 2、在内存中读取 读取文件行的标准方式是在内存中读取,Guava 和...
java 实现 icmp协议测试 需要在java lib目录下添加libjpcap.so文件
内涵代码示例,使用com.healthmarketscience.jackcess 工具包。导出几万条数据只需几秒