Java性能优化
Java性能优化技巧集锦
一、通用篇
1.1 不用new关键词创建类的实例
1.2 使用非阻塞I/O
1.3 慎用异常
1.4 不要重复初始化变量
1.5 尽量指定类的final修饰符
1.6 尽量使用局部变量
1.7
乘法和除法
二、J2EE篇
2.1 使用缓冲标记
2.2 始终通过会话Bean访问实体Bean
2.3 选择合适的引用机制
2.4 在部署描述器中设置只读属性
2.5 缓冲对EJB Home的访问
2.6
为EJB实现本地接口
2.7 生成主键
2.8 及时清除不再需要的会话
2.9
在JSP页面中关闭无用的会话
2.10 Servlet与内存使用
2.11 HTTP Keep-Alive
2.12 JDBC与Unicode
2.13 JDBC与I/O
1.14 内存数据库
三、GUI篇
3.1 用JAR压缩类文件
3.2 提示Applet装入进程
3.3 在画出图形之前预先装入它
3.4
覆盖update方法
3.5 延迟重画操作
3.6 使用双缓冲区
3.7 使用BufferedImage
3.8 使用VolatileImage
3.9 使用Window Blitting
四、补充资料
===================================
正文:
===================================
一、通用篇
“通用篇”讨论的问题适合于大多数Java应用。
1.1 不用new关键词创建类的实例
用new关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用。但如果一个对象实现了Cloneable接口,我们可以调用它的
clone()方法。clone()方法不会调用任何类构造函数。
在使用设计模式(Design
Pattern)的场合,如果用Factory模式创建对象,则改用clone()方法创建新的对象实例非常简单。例如,下面是Factory模式的一个
典型实现:
public static Credit getNewCredit() {
return new Credit();
}
改进后的代码使用clone()方法,如下所示:
private static Credit BaseCredit = new Credit();
public static
Credit getNewCredit() {
return (Credit) BaseCredit.clone();
}
上面的思路对于数组处理同样很有用。
1.2 使用非阻塞I/O
版本较低的JDK不支持非阻塞I/O
API。为避免I/O阻塞,一些应用采用了创建大量线程的办法(在较好的情况下,会使用一个缓冲池)。这种技术可以在许多必须支持并发I/O流的应用中见
到,如Web服务器、报价和拍卖应用等。然而,创建Java线程需要相当可观的开销。
JDK 1.4引入了�
相关文档:
下边是自己对类的一些使用认识,如果有不对的,敬请达人指正。
任何类的使用都经历:类加载和类初始化的阶段。
类初始化:
*普通成员属性:
1.系统默认初始化,基本类型默认为0或false,引用类型默认为null。
2.声明时显示初始化或普通初始化块(注意:普通初始化只有在new构造函数创建实例时,才会被自动调 ......
1 引言
Java的一个重要优点就是通过垃圾收集器GC (Garbage Collection)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java 不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC 或JVM的问题。其实,这种想法是不正确的,因为Java 也存在内存 ......
1、作用域public,private,protected,以及不写时的区别
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
不写时默认为friendly √ √ × ×
private √ × × ×
2、ArrayList和Vect ......
文章一
文章二
文章三
原文
J2ME开发优化
1、猜测Vector的长度
2、使用局部变量
3、避免字符串比较
4、将变量和方法声明为final和static,以加快访问
5、使用惰性实例化
6、处理outofmemoryError错误
7、使用数组而不是对象
8、倒计至零的迭代循环,因为和零比较将会较快
9、把引用设置为NULL
10、最大限度的 ......
java中synchronized用法(zz)
打个比方:一个object就像一个大房子,大门永远打开。房子里有 很多房间(也就是方法)。这些房间有上锁的(synchronized方法), 和不上锁之分(普通方法)。房门口放着一把钥匙(key),这把钥匙可以打开所有上锁的房间。另外我把所有想调用该对象方法的线程比喻成想进入这房子某个 ......