国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JAVA程序的性能優化

2019-11-18 11:32:46
字體:
來源:轉載
供稿:網友

1 使用非阻塞I/O

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

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

2 慎用異常

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

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

3 不要重復初始化變量

默認情況下,調用類的構造函數時, Java會把變量初始化成確定的值:所有的對象被設置成null,整數變量(byte、short、int、long)設置成0,float和double變量設置成0.0,邏輯值設置成false。當一個類從另一個類派生時,這一點尤其應該注重,因為用new要害詞創建一個對象時,構造函數鏈中的所有構造函數都會被自動調用。

4 盡量指定類的final修飾符

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

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

5 盡量使用局部變量

調用方法時傳遞的參數以及在調用中創建的臨時變量都保存在棧(Stack)中,速度較快。其他變量,如靜態變量、實例變量等,都在堆(Heap)中創建,速度較慢。另外,依靠于具體的編譯器/JVM,局部變量還可能得到進一步優化。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 增城市| 巴里| 湖州市| 枣阳市| 莆田市| 蒲江县| 蒙城县| 那坡县| 揭阳市| 黔东| 岗巴县| 武山县| 新绛县| 遵化市| 陆良县| 葫芦岛市| 岱山县| 涿州市| 宜宾县| 通化市| 宜章县| 神池县| 昌乐县| 长武县| 图木舒克市| 汽车| 南安市| 绿春县| 武功县| 武隆县| 定边县| 嵩明县| 南充市| 博爱县| 佛教| 丹东市| 萍乡市| 汪清县| 积石山| 涿州市| 得荣县|