BEA WebLogic平臺下J2EE調(diào)優(yōu)攻略1_第1頁
BEA WebLogic平臺下J2EE調(diào)優(yōu)攻略1_第2頁
BEA WebLogic平臺下J2EE調(diào)優(yōu)攻略1_第3頁
BEA WebLogic平臺下J2EE調(diào)優(yōu)攻略1_第4頁
BEA WebLogic平臺下J2EE調(diào)優(yōu)攻略1_第5頁
免費預(yù)覽已結(jié)束,剩余2頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第第頁BEAWebLogic平臺下J2EE調(diào)優(yōu)攻略1BEAWebLogic平臺下J2EE調(diào)優(yōu)攻略1

發(fā)表于:2023-08-07來源::點擊數(shù):標(biāo)簽:WebLogic平臺攻略接口BEA對象

BEAWebLogic平臺下J2EE調(diào)優(yōu)攻略第一章應(yīng)用程序調(diào)優(yōu)1.1.1通用代碼調(diào)優(yōu)1.1.2減小沒有必要的操作對象的創(chuàng)建是個很昂貴的工作,所以我們應(yīng)當(dāng)盡量減少對象的創(chuàng)建,在需要的時候聲明它,初始化它,不要重復(fù)初始化一個對象,盡量能做到再使用,而用完后置null

BEAWebLogic平臺下J2EE調(diào)優(yōu)攻略第一章應(yīng)用程序調(diào)優(yōu)

1.1.1通用代碼調(diào)優(yōu)

1.1.2減小沒有必要的操作

對象的創(chuàng)建是個很昂貴的工作,所

以我們應(yīng)當(dāng)盡量減少對象的創(chuàng)建,在需要的時候聲明它,初始化它,不要重復(fù)初始化一個對象,盡量能做到

再使用,而用完后置null有利于垃圾收集。讓類實現(xiàn)Cloneable接口,同時采用工廠模式,將減少類的創(chuàng)建,

每次都是通過clone()方法來獲得對象。另外使用接口也能減少類的創(chuàng)建。對于成員變量的初始化也應(yīng)盡

量避免,特別是在一個類派生另一個類時。

異常拋出對性能不利。拋出異常

首先要創(chuàng)建一個新的對象。Throwable接口的構(gòu)造函數(shù)調(diào)用名為,fillInStackTrace()的本地(Native)

方法,fillInStackTrace()方法檢查堆棧,收集調(diào)用跟蹤信息。只要有異常被拋出,VM就必須調(diào)整調(diào)用

堆棧,因為在處理過程中創(chuàng)建了一個新的對象。異常只能用于錯誤處理,不應(yīng)該用來控制程序流程。

此外,建議關(guān)閉Debug輸出,盡量少用串行化、同步操作和耗時昂貴的服務(wù)(如Date())。

1.1.3使用合適的類型

當(dāng)原始類型不能滿足我們要求時,使用復(fù)雜類型。String和StringBuffer的區(qū)別自不必說了,是我

們使用最多的類型,在涉及到字符運算時,強烈建議使用StringBuffer。在做String匹配時使用intern()

代替equal()

帶有final修飾符的類是不可派生的,如果指定一個類為final,則該類所有的方法都是final。

Java編譯器會尋找機會內(nèi)聯(lián)所有的final方法,這將能夠使性能平均提高50%。類的屬性和方式使

用final或者static修飾符也是有好處的。

調(diào)用方法時傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時變量都保存在棧(Stack)中,速度較快。所以

盡量使用局部變量。

ArrayList和Vector,HashMap和Hashtable是我們經(jīng)常用到的類,前者不支持同步,后者支持同步,

前者性能更好,大多數(shù)情況下選擇前者。

1.1.4盡量使用pool,buffer和cache

使用pool、buffer和cache能大大提高系統(tǒng)的性能,這在J2EE的大部分技術(shù)中都是適用的。

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

Pool。I/O操作中,buffer是必須的,特別是對大文件的操作,不然容易造成內(nèi)存溢出。字節(jié)操作最快,所以

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

需要Unicode到Byte的轉(zhuǎn)換。

而后面講到的JDBC、JSP、EJB和JMS我們都非常建議使用buffer和cache。為

HttpServletResponse設(shè)置buffersize,使用wl-cache,緩存在JNDI樹上獲取的對象等等。

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

1.2JDBC代碼調(diào)優(yōu)

1.2.1嚴(yán)格資源使用

JDBC代碼調(diào)優(yōu)最大的原則就是使用WebLogic的連接池,而不是自己直連數(shù)據(jù)庫。在我接觸的很多

自己實現(xiàn)連接池的項目中,大部分遇到死鎖和連接泄漏的問題,最后得不得修改代碼。而WebLogic提供了

功能強大,性能良好的數(shù)據(jù)庫連接池,我們要做的只是封裝一個連接管理類,從JNDI樹上獲取數(shù)據(jù)源并

緩存,得到連接,并提供一系列關(guān)閉數(shù)據(jù)庫資源的方法。

對任何資源使用的原則是用完即關(guān),不管是數(shù)據(jù)庫資源、上下文環(huán)境,還是文件。數(shù)據(jù)庫資源的

泄漏極易造成內(nèi)存泄漏,乃至系統(tǒng)崩潰。

在使用完數(shù)據(jù)庫資源后依次關(guān)閉ResultSet,Statement和Connection,而在一個數(shù)據(jù)庫連接多次進行數(shù)

據(jù)庫操作時要特別注意ResultSet和Statement依次關(guān)閉。

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操作中還有一些小的技巧跟大家分享:由于獲取連接時默認(rèn)自動提交方式,使用

connection.setAutoCommit(false)關(guān)閉

自動提交,使用PreparedStatement,批量更新,業(yè)務(wù)復(fù)雜或者大數(shù)據(jù)量操作時使用存儲過程,盡量使用

RowSet,此外設(shè)置記錄集讀取緩存FetchSize和設(shè)置記錄集讀取方向FetchDirection對性能也有一定的提

高。

1.2.3優(yōu)化SQL語句

SQL語句的優(yōu)化牽涉到很多數(shù)據(jù)庫的知識,需要與索引配合,因此需要DBA對代碼中的SQL進行檢

查php?name=%B2%E2%CA%D4">測試。常見的,select*不提倡使用,效率極差,建議顯式獲取列,即使是所有字段也應(yīng)羅列,而取

總數(shù)時使用count(*),為提

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論