国产探花免费观看_亚洲丰满少妇自慰呻吟_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,局部變量還可能得到進一步優化。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 建湖县| 临江市| 宜君县| 樟树市| 靖宇县| 桂东县| 班戈县| 重庆市| 互助| 仙居县| 璧山县| 汤阴县| 嘉祥县| 惠安县| 英山县| 陆河县| 饶河县| 城固县| 嘉祥县| 会宁县| 明光市| 长春市| 丽江市| 磐安县| 平乐县| 东乌| 漯河市| 旺苍县| 丰都县| 蒙山县| 金乡县| 高要市| 北碚区| 朝阳县| 黄龙县| 瑞金市| 开化县| 钟山县| 广平县| 崇义县| 固始县|