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

下載本文檔

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

文檔簡(jiǎn)介

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

發(fā)表于:2023-08-07來(lái)源::點(diǎn)擊數(shù):標(biāo)簽:WebLogic平臺(tái)攻略接口BEA對(duì)象

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

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

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

1.1.2減小沒(méi)有必要的操作

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

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

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

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

量避免,特別是在一個(gè)類派生另一個(gè)類時(shí)。

異常拋出對(duì)性能不利。拋出異常

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

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

堆棧,因?yàn)樵谔幚磉^(guò)程中創(chuàng)建了一個(gè)新的對(duì)象。異常只能用于錯(cuò)誤處理,不應(yīng)該用來(lái)控制程序流程。

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

1.1.3使用合適的類型

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

們使用最多的類型,在涉及到字符運(yùn)算時(shí),強(qiáng)烈建議使用StringBuffer。在做String匹配時(shí)使用intern()

代替equal()

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

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

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

調(diào)用方法時(shí)傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時(shí)變量都保存在棧(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是必須的,特別是對(duì)大文件的操作,不然容易造成內(nèi)存溢出。字節(jié)操作最快,所以

盡可能采用write(byte[]),BufferedFileOutputStream比BufferedFileWriter要快,因?yàn)镕ileWriter

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

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

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

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

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

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

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

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

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

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

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

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

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

據(jù)庫(kù)操作時(shí)要特別注意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實(shí)用技巧

在JDBC操作中還有一些小的技巧跟大家分享:由于獲取連接時(shí)默認(rèn)自動(dòng)提交方式,使用

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

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

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

高。

1.2.3優(yōu)化SQL語(yǔ)句

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論