<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Knight of the round table

    wansong

    Java性能優(yōu)化技巧集錦(1,2,3,4,5,6) 原文鏈接:http://edu.codepub.com/2010/0210/20413.php

    一、通用篇
      1.1 不用new關(guān)鍵詞創(chuàng)建類的實例
      1.2 使用非阻塞I/O
      1.3 慎用異常
      1.4 不要重復(fù)初始化變量
      1.5 盡量指定類的final修飾符
      1.6 盡量使用局部變量
      1.7 乘法和除法
    二、J2EE篇
     
    一、通用篇
      1.1 不用new關(guān)鍵詞創(chuàng)建類的實例
      1.2 使用非阻塞I/O
      1.3 慎用異常
      1.4 不要重復(fù)初始化變量
      1.5 盡量指定類的final修飾符
      1.6 盡量使用局部變量
      1.7 乘法和除法
    二、J2EE篇
      2.1 使用緩沖標(biāo)記
      2.2 始終通過會話Bean訪問實體Bean
      2.3 選擇合適的引用機(jī)制
      2.4 在部署描述器中設(shè)置只讀屬性
      2.5 緩沖對EJB Home的訪問
      2.6 為EJB實現(xiàn)本地接口
      2.7 生成主鍵
      2.8 及時清除不再需要的會話
      2.9 在JSP頁面中關(guān)閉無用的會話
      2.10 Servlet與內(nèi)存使用
      2.11 HTTP Keep-Alive
      2.12 JDBC與Unicode
      2.13 JDBC與I/O
      1.14 內(nèi)存數(shù)據(jù)庫
    三、GUI篇
      3.1 用JAR壓縮類文件
      3.2 提示Applet裝入進(jìn)程
      3.3 在畫出圖形之前預(yù)先裝入它
      3.4 覆蓋update方法
      3.5 延遲重畫操作
      3.6 使用雙緩沖區(qū)
      3.7 使用BufferedImage
      3.8 使用VolatileImage
      3.9 使用Window Blitting
    四、補(bǔ)充資料
    ===================================
    正文:
    ===================================
    一、通用篇

    “通用篇”討論的問題適合于大多數(shù)Java應(yīng)用。

    1.1 不用new關(guān)鍵詞創(chuàng)建類的實例

    用new關(guān)鍵詞創(chuàng)建類的實例時,構(gòu)造函數(shù)鏈中的所有構(gòu)造函數(shù)都會被自動調(diào)用。但如果一個對象實現(xiàn)了Cloneable接口,我們可以調(diào)用它的clone()方法。clone()方法不會調(diào)用任何類構(gòu)造函數(shù)。

    在使用設(shè)計模式(Design Pattern)的場合,如果用Factory模式創(chuàng)建對象,則改用clone()方法創(chuàng)建新的對象實例非常簡單。例如,下面是Factory模式的一個典型實現(xiàn):


    public static Credit getNewCredit() {
    return new Credit();
    }

    改進(jìn)后的代碼使用clone()方法,如下所示:


    private static Credit BaseCredit = new Credit();
    public static Credit getNewCredit() {
    return (Credit) BaseCredit.clone();
    }

    上面的思路對于數(shù)組處理同樣很有用。

    1.2 使用非阻塞I/O

    版本較低的JDK不支持非阻塞I/O API。為避免I/O阻塞,一些應(yīng)用采用了創(chuàng)建大量線程的辦法(在較好的情況下,會使用一個緩沖池)。這種技術(shù)可以在許多必須支持并發(fā)I/O流的應(yīng)用中見到,如Web服務(wù)器、報價和拍賣應(yīng)用等。然而,創(chuàng)建Java線程需要相當(dāng)可觀的開銷。

    JDK 1.4引入了非阻塞的I/O庫(java.nio)。如果應(yīng)用要求使用版本較早的JDK,在這里有一個支持非阻塞I/O的軟件包。

    請參見Sun中國網(wǎng)站的《調(diào)整Java的I/O性能》。

    1.3 慎用異常

    異常對性能不利。拋出異常首先要創(chuàng)建一個新的對象。Throwable接口的構(gòu)造函數(shù)調(diào)用名為fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法檢查堆棧,收集調(diào)用跟蹤信息。只要有異常被拋出,VM就必須調(diào)整調(diào)用堆棧,因為在處理過程中創(chuàng)建了一個新的對象。

    異常只能用于錯誤處理,不應(yīng)該用來控制程序流程。

    1.4 不要重復(fù)初始化變量

    默認(rèn)情況下,調(diào)用類的構(gòu)造函數(shù)時, Java會把變量初始化成確定的值:所有的對象被設(shè)置成null,整數(shù)變量(byte、short、int、long)設(shè)置成0,float和 double變量設(shè)置成0.0,邏輯值設(shè)置成false。當(dāng)一個類從另一個類派生時,這一點尤其應(yīng)該注意,因為用new關(guān)鍵詞創(chuàng)建一個對象時,構(gòu)造函數(shù)鏈中的所有構(gòu)造函數(shù)都會被自動調(diào)用。

    1.5 盡量指定類的final修飾符

    帶有final修飾符的類是不可派生的。在Java核心API中,有許多應(yīng)用final的例子,例如java.lang.String。為String類指定final防止了人們覆蓋length()方法。

    另外,如果指定一個類為final,則該類所有的方法都是final。Java編譯器會尋找機(jī)會內(nèi)聯(lián)(inline)所有的final方法(這和具體的編譯器實現(xiàn)有關(guān))。此舉能夠使性能平均提高50%。

    1.6 盡量使用局部變量

    調(diào)用方法時傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時變量都保存在棧(Stack)中,速度較快。其他變量,如靜態(tài)變量、實例變量等,都在堆(Heap)中創(chuàng)建,速度較慢。另外,依賴于具體的編譯器/JVM,局部變量還可能得到進(jìn)一步優(yōu)化。請參見《盡可能使用堆棧變量》。

    1.7 乘法和除法

    考慮下面的代碼:


    for (val = 0; val < 100000; val +=5) { alterX = val * 8; myResult = val * 2; }

    用移位操作替代乘法操作可以極大地提高性能。下面是修改后的代碼:


    for (val = 0; val < 100000; val += 5) { alterX = val << 3; myResult = val << 1; }

    修改后的代碼不再做乘以8的操作,而是改用等價的左移3位操作,每左移1位相當(dāng)于乘以2。相應(yīng)地,右移1位操作相當(dāng)于除以2。值得一提的是,雖然移位操作速度快,但可能使代碼比較難于理解,所以最好加上一些注釋。
     
    本篇文章來源于:開發(fā)學(xué)院 http://edu.codepub.com   原文鏈接:http://edu.codepub.com/2010/0210/20413.php

    posted on 2010-05-17 17:58 w@ns0ng 閱讀(183) 評論(0)  編輯  收藏 所屬分類: J2EE

    主站蜘蛛池模板: 久久亚洲精品成人| 亚洲欧洲无码AV电影在线观看 | 亚洲国产精品嫩草影院在线观看 | 国产精品成人无码免费| youjizz亚洲| 永久免费的网站在线观看| 亚洲av无码片在线观看| 老司机在线免费视频| 亚洲欧美国产日韩av野草社区| 美女视频黄的全免费视频网站| 亚洲天堂2017无码中文| 无码视频免费一区二三区| 亚洲永久网址在线观看| 国产成人在线观看免费网站 | 国产真人无码作爱视频免费| 国产AV无码专区亚洲AVJULIA | 亚洲福利视频网址| 思思re热免费精品视频66| 亚洲色一区二区三区四区| 超pen个人视频国产免费观看| 国产精品亚洲一区二区无码| 亚洲日韩中文字幕日韩在线| 91视频免费观看| www.亚洲成在线| 免费h黄肉动漫在线观看| 久久久久免费视频| 亚洲婷婷天堂在线综合| 国产片免费在线观看| 97在线免费观看视频| 亚洲乱码一二三四区麻豆| 日本一道本高清免费| 手机看片国产免费永久| 亚洲啪啪免费视频| 亚洲人AV永久一区二区三区久久| 野花香在线视频免费观看大全| 亚洲免费在线视频观看| 亚洲精品岛国片在线观看| 蜜桃成人无码区免费视频网站| 亚洲AV无码精品国产成人| 亚洲中文字幕不卡无码| 毛片免费观看网址|