優(yōu)化JAVA程序開發(fā)提高JAVA性能-_第1頁
優(yōu)化JAVA程序開發(fā)提高JAVA性能-_第2頁
優(yōu)化JAVA程序開發(fā)提高JAVA性能-_第3頁
全文預覽已結(jié)束

下載本文檔

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

文檔簡介

1、象。這樣,就可以只在對象作用的范圍內(nèi)進行初始化。從而節(jié)約系統(tǒng)的開銷。 例: SomeObject so=new SomeObject(; If(x=1 then Foo=so.getXX(; 可以修改為: if(x=1 then SomeObject so=new SomeObject(; Foo=so.getXX(; 2.異常(Exceptions JAVA語言中提供了try/catch來發(fā)方便用戶捕捉異常,進行異常的處理。但是如果使用不當,也會給JAVA程序的性能帶來影響。因此,要注意以下兩點: (1 避免對應用程序的邏輯使用try/catch 如果可以用if,while等邏輯語句來處理,

2、那么就盡可能的不用try/catch語句。 (2 重用異常 在必須要進行異常的處理時,要盡可能的重用已經(jīng)存在的異常對象。以為在異常的處理中,生成一個異常對象要消耗掉大部分的時間。 3. 線程(Threading 一個高性能的應用程序中一般都會用到線程。因為線程能充分利用系統(tǒng)的資源。在其他線程因為等待硬盤或網(wǎng)絡讀寫而 時,程序能繼續(xù)處理和運行。但是對線程運用不當,也會影響程序的性能。 例2:正確使用Vector類 Vector主要用來保存各種類型的對象(包括相同類型和不同類型的對象。但是在一些情況下使用會給程序帶來性能上的影響。這主要是由Vector 類的兩個特點所決定的。第一,Vector提供

3、了線程的安全保護功能。即使Vector類中的許多方法同步。但是如果你已經(jīng)確認你的應用程序是單線程,這些方法的同步就完全不必要了。第二,在Vector查找存儲的各種對象時,常常要花很多的時間進行類型的匹配。而當這些對象都是同一類型時,這些匹配就完全不必要了。因此,有必要設計一個單線程的,保存特定類型對象的類或集合來替代Vector類.用來替換的程序如下 (StringVector.java: public class StringVector private String data; private int count; public StringVector( this(10; / defau

4、lt size is 10 public StringVector(int initialSize data = new StringinitialSize; public void add(String str / ignore null strings if(str = null return; ensureCapacity(count + 1; datacount+ = str; private void ensureCapacity(int minCapacity int oldCapacity = data.length; if (minCapacity > oldCapaci

5、ty String oldData = data; int newCapacity = oldCapacity * 2; data = new StringnewCapacity; System.arraycopy(oldData, 0, data, 0, count; public void remove(String str if(str = null return; / ignore null str for(int i = 0; i < count; i+ / check for a match 方法時,會發(fā)生”死鎖”。即使這兩個方法并不共享任何資源。為了避免這個問題,可以對一個

6、對象實行”多鎖”的機制。如下所示: class foo private static int var1; private static Object lock1=new Object(; private static int var2; private static Object lock2=new Object(; public static void increment1( synchronized(lock1 var1+; public static void increment2( synchronized(lock2 var2+; 4.輸入和輸出(I/O 輸入和輸出包括很多方面,但涉

7、及最多的是對硬盤,網(wǎng)絡或數(shù)據(jù)庫的讀寫操作。對于讀寫操作,又分為有緩存和沒有緩存的;對于數(shù)據(jù)庫的操作,又可以有多種類型的JDBC驅(qū)動器可以選擇。但無論怎樣,都會給程序的性能帶來影響。因此,需要注意如下幾點: (1 使用輸入輸出緩沖 盡可能的多使用緩存。但如果要經(jīng)常對緩存進行刷新(flush,則建議不要使用緩存。 (2 輸出流(Output Stream和Unicode字符串 當時用Output Stream和Unicode字符串時,Write類的開銷比較大。因為它要實現(xiàn)Unicode到字節(jié)(byte的轉(zhuǎn)換.因此,如果可能的話,在使用Write類之前就實現(xiàn)轉(zhuǎn)換或用OutputStream類代替Wr

8、iter類來使用。 (3 當需序列化時使用transient 當序列化一個類或?qū)ο髸r,對于那些原子類型(atomic或可以重建的原素要表識為transient類型。這樣就不用每一次都進行序列化。如果這些序列化的對象要在網(wǎng)絡上傳輸,這一小小的改變對性能會有很大的提高。 (4 使用高速緩存(Cache 對于那些經(jīng)常要使用而又不大變化的對象或數(shù)據(jù),可以把它存儲在高速緩存中。這樣就可以提高訪問的速度。這一點對于從數(shù)據(jù)庫中返回的結(jié)果集尤其重要。 (5 使用速度快的JDBC驅(qū)動器(Driver JAVA對訪問數(shù)據(jù)庫提供了四種方法。這其中有兩種是JDBC驅(qū)動器。一種是用JAVA外包的本地驅(qū)動器;另一種是完全的JAVA驅(qū)動器。具體要使用哪一種得根據(jù)JAVA布署的環(huán)境和應用程序本身來定。 5.一些其他的經(jīng)驗和技巧 (1 使用局部變量。 (2 避免在同一個類中

溫馨提示

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

評論

0/150

提交評論