- 适当使用局部变量。请看子 孑的使用临时变量提高Java代码性能 !
- 使用 System.arraycopy() 取代通过循环方式来复制数组!
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
- 适当使用单例模式,设置变量为static类型,减少内存消耗:
try {
Context initContext = new InitialContext();
userDataSource = (DataSource)initContext.lookup("java:comp/env/jdbc/honghu_user");
}catch(NamingException nameEx) {
System.out.println("lookup失败");
nameEx.printStackTrace();
}
- 将访问实例内变量的getter/setter方法变成final ;
final标记的方法调用时是作为内嵌inlined代码,减少方法调用时栈的现场状态保留! - 判断String是否以某个字母开头,推荐使用charAt(0),无需使用startWith("x");
- 在多次比较同一字符串时,推荐使用intern()方法来实现直接判断==,不使用equals();
while (str != null)
{
if (str == compareStr)
{ //字符串内容相同
...
}
else //字符串内容不相同
{
...
}
}
public String intern()
- 返回字符串对象的规范化表示形式。
一个初始为空的字符串池,它由类
String
私有地维护。当调用 intern 方法时,如果池已经包含一个等于此String
对象的字符串(用equals(Object)
方法确定),则返回池中的字符串。否则,将此String
对象添加到池中,并返回此String
对象的引用。它遵循以下规则:对于任意两个字符串s
和t
,当且仅当s.equals(t)
为true
时,s.intern() == t.intern()
才为true
。所有字面值字符串和字符串赋值常量表达式都使用 intern 方法进行操作。字符串字面值在 Java Language Specification 的 §3.10.5 定义。- 返回:
- 一个字符串,内容与此字符串相同,但一定取自具有唯一字符串的池。
- 在字符串相加时,如果该字符串只有一个字符的话,使用 ' ' 代替 " "!
例如String str = "追求完美" + '!'; - 对于占用内存比较多的对象,当其不再使用时,最好设置为null,方便垃圾回收;
- I/O操作使用缓冲操作,提高效率;
- 对于Servlet应用:
- 采用out对象中的print()代替println();
因为println()方法本身需要判断当前系统,从而决定使用哪种换行方式。 - 采用ServletOutputStream对象代替PrintWriter对象;
因为PrintWriter对象在输出信息时,需要将字符流编码成字节流,比ServletOutputStream多了一个处理过程。 - 采用部分输出的方式向客户端输出数据;
尤其是所传送的数据量非常大的时候,在最后调用flush()输出数据显然是相对低效的,所以需要采用部分输出数据的方式!