BEA WebLogic平台下J2EE调优攻略1_第1页
BEA WebLogic平台下J2EE调优攻略1_第2页
BEA WebLogic平台下J2EE调优攻略1_第3页
BEA WebLogic平台下J2EE调优攻略1_第4页
BEA WebLogic平台下J2EE调优攻略1_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页BEAWebLogic平台下J2EE调优攻略1BEAWebLogic平台下J2EE调优攻略1

发表于:2023-08-07来源::点击数:标签:WebLogic平台攻略接口BEA对象

BEAWebLogic平台下J2EE调优攻略第一章应用程序调优1.1.1通用代码调优1.1.2减小没有必要的操作对象的创建是个很昂贵的工作,所以我们应当尽量减少对象的创建,在需要的时候声明它,初始化它,不要重复初始化一个对象,尽量能做到再使用,而用完后置null

BEAWebLogic平台下J2EE调优攻略第一章应用程序调优

1.1.1通用代码调优

1.1.2减小没有必要的操作

对象的创建是个很昂贵的工作,所

以我们应当尽量减少对象的创建,在需要的时候声明它,初始化它,不要重复初始化一个对象,尽量能做到

再使用,而用完后置null有利于垃圾收集。让类实现Cloneable接口,同时采用工厂模式,将减少类的创建,

每次都是通过clone()方法来获得对象。另外使用接口也能减少类的创建。对于成员变量的初始化也应尽

量避免,特别是在一个类派生另一个类时。

异常抛出对性能不利。抛出异常

首先要创建一个新的对象。Throwable接口的构造函数调用名为,fillInStackTrace()的本地(Native)

方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被抛出,VM就必须调整调用

堆栈,因为在处理过程中创建了一个新的对象。异常只能用于错误处理,不应该用来控制程序流程。

此外,建议关闭Debug输出,尽量少用串行化、同步操作和耗时昂贵的服务(如Date())。

1.1.3使用合适的类型

当原始类型不能满足我们要求时,使用复杂类型。String和StringBuffer的区别自不必说了,是我

们使用最多的类型,在涉及到字符运算时,强烈建议使用StringBuffer。在做String匹配时使用intern()

代替equal()

带有final修饰符的类是不可派生的,如果指定一个类为final,则该类所有的方法都是final。

Java编译器会寻找机会内联所有的final方法,这将能够使性能平均提高50%。类的属性和方式使

用final或者static修饰符也是有好处的。

调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。所以

尽量使用局部变量。

ArrayList和Vector,HashMap和Hashtable是我们经常用到的类,前者不支持同步,后者支持同步,

前者性能更好,大多数情况下选择前者。

1.1.4尽量使用pool,buffer和cache

使用pool、buffer和cache能大大提高系统的性能,这在J2EE的大部分技术中都是适用的。

在WebLogic中就大量使用了池:JDBCConnectionPool、SocketPool、ObjectPool和Thread

Pool。I/O操作中,buffer是必须的,特别是对大文件的操作,不然容易造成内存溢出。字节操作最快,所以

尽可能采用write(byte[]),BufferedFileOutputStream比BufferedFileWriter要快,因为FileWriter

需要Unicode到Byte的转换。

而后面讲到的JDBC、JSP、EJB和JMS我们都非常建议使用buffer和cache。为

HttpServletResponse设置buffersize,使用wl-cache,缓存在JNDI树上获取的对象等等。

此外,使用JDK1.4的非阻塞I/O对性能也有很大提高。

1.2JDBC代码调优

1.2.1严格资源使用

JDBC代码调优最大的原则就是使用WebLogic的连接池,而不是自己直连数据库。在我接触的很多

自己实现连接池的项目中,大部分遇到死锁和连接泄漏的问题,最后得不得修改代码。而WebLogic提供了

功能强大,性能良好的数据库连接池,我们要做的只是封装一个连接管理类,从JNDI树上获取数据源并

缓存,得到连接,并提供一系列关闭数据库资源的方法。

对任何资源使用的原则是用完即关,不管是数据库资源、上下文环境,还是文件。数据库资源的

泄漏极易造成内存泄漏,乃至系统崩溃。

在使用完数据库资源后依次关闭ResultSet,Statement和Connection,而在一个数据库连接多次进行数

据库操作时要特别注意ResultSet和Statement依次关闭。

try{

//openconnection

pstmt=conn.prepareStatement(strSql1);

pstmt.executeUpdate();

pstmt.close();

pstmt=conn.prepareStatement(strSql2);

rs=pstmt.executeQuery();

while(rs.next()){

//process

}

rs.close();

pstmt.close();

}catch(Exceptione){

//closers,psmt,con

}finally{

//closers,psmt,con

}

1.2.2实用技巧

在JDBC操作中还有一些小的技巧跟大家分享:由于获取连接时默认自动提交方式,使用

connection.setAutoCommit(false)关闭

自动提交,使用PreparedStatement,批量更新,业务复杂或者大数据量操作时使用存储过程,尽量使用

RowSet,此外设置记录集读取缓存FetchSize和设置记录集读取方向FetchDirection对性能也有一定的提

高。

1.2.3优化SQL语句

SQL语句的优化牵涉到很多数据库的知识,需要与索引配合,因此需要DBA对代码中的SQL进行检

查php?name=%B2%E2%CA%D4">测试。常见的,select*不提倡使用,效率极差,建议显式获取列,即使是所有字段也应罗列,而取

总数时使用count(*),为提

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论