JAVA性能優化的五種方式


一,JAVA性能優化之設計優化
設計優化處於性能優化手段的上層。它往往須要在軟件開發之前進行。在軟件開發之前,系統架構師應該就評估系統可能存在的各種潛在問題和技術難點,並給出合理的設計方案,因為軟件設計和系統架構對軟件總體設計質量有決定性的影響。所以,設計調優對系統的性能影響也是最大的,假設說,代碼優化。JVM優化都是對系統微觀層次的“量”的優化,那設計優化就是對系統”質”的優化.
設計優化的一大顯著特征是:它能夠規避某一個組件的性能問題,而是改良組件的實現;比方:組件A通過循環監控不斷的檢測時間E是否發生,其檢測行為必定會占用部分系統資源,因此,開發者必須檢測頻率和資源消耗上取得平衡,假設檢測頻率太低,盡管降低了資源消耗,可是系統實時反應性就會降低,假設進行代碼層的調優,就須要優化檢測方法的實現及要求得一個最為恰當的檢測頻率.對於這個問題我們就能夠用設計模式中的觀察者模式 ,當事件E發生的時刻,由事件E通知組件A,從而觸發組件A的行為.這樣的設計從根本上攻克了存在性能隱患的循環監控,從根本上攻克了這一問題.
進行設計優化時,設計人員和必須熟悉經常使用的設計方法,設計模式,以及主要的性能組件和經常使用的優化思想,並將其有機地集成在軟件系統中.
注意:一個良好的系統設計能夠規避非常多潛在在的性能問題.因此,盡可能多花些時間在系統設計上,是創建高性能程序的關鍵
二,JAVA性能優化之代碼優化
代碼調優是在軟件開發中,或者是軟件開發完畢后,軟件維護過程中進行的程序代碼的改進和優化.代碼優化涉及諸多編碼技巧,須要開發者熟悉相關的語言API ,並在適合的場景中正確的使用相關API或類庫.同一時候,對算法,數據結構的靈活使用,也是代碼優化的一個重要內容.
盡管代碼優化時從微觀上對性能進行調整,可是一個”好”的實現和一個”壞”的實現對系統的影響也是非常大的.比方,相同作為List的實現,LinkedList和ArrayList在隨機訪問上的性能卻差了好幾個量級;比方相同是文件讀寫的實現,使用Stream方式和使用JAVA NIO的方式,其系能可能又會是還有一個數量級.
因此,盡管與設計優化相比,筆者將代碼優化成為在微觀層面上的優化,但它卻是對系統性能產生最直接影響的優化方法.
三,JVM優化
因為JAVA軟件總是執行在JVM虛擬機之上。對JVM虛擬機進行優化也能一定程度上的提升JAVA程序的性能。JVM通常能夠在軟件開發后期進行,如在開發完畢或者是軟件開發的某一里程碑階段。
作為JAVA軟件的執行平台。JVM的各項參數將會直接影響JAVA程序的性能。

比方,JVM的堆大小,垃圾回收策略等等。
要進行JVM層面的調優。須要開發者對JVM的執行原理和基本內存結構有一定的了解。如,堆內存的結構,GC的種類等。然后,根據引用程序的特點。設置合理的JVM啟動參數。


四。數據庫優化
對絕大部分應用系統而言。數據庫是不可缺少的一部分。JAVA程序能夠使用JDBC的方式連接數據庫。對數據庫的調優能夠分為三個部分:

  • 在應用層對SQL語句進行優化;
  • 對數據庫進行優化。
  • 對數據庫軟件進行優化。

在應用層優化數據庫訪問。涉及大量的編程技巧。比方。當使用JDBC進行查詢的時候,對於大量擁有相同結構的SQL查詢,能夠使用PerparedStatement取代Statement。以提高數據庫的查詢效率。在使用Select語句中,顯示指定要查詢的列名 ,避免使用*
在對數據庫優化時,主要目的是建立一個具有良好表結構的數據庫。

比方,為了提高多表級聯查詢的效率,能夠合理地使用冗余字段;對於大表,能夠使用行的水平分割或者相似Oracle分區的技術;為了提高數據的查詢的效率,能夠建立有效水平分割或者相似Oracle分區表的技術;為了提高數據庫查詢效率。在select語句中。顯示指定要查詢的列名,避免使用*。
在對數據庫進行優化時。主要目的是建立一個具有良好表結構的數據庫。比方,為了提高多表級聯查詢效率,能夠合理地使用冗余字段。對於大表。能夠使用行數據來水平分割,為了提高數據庫的查詢效率,能夠建立有效且事宜的索引
五,JAVA性能優化之操作系統優化
操作系統,調優的手段和參數可能有所不同,比方,在主流Unix系統中。共享內存段。信號量,共享內存最大值(shmmax)。共享內存最小值(shmmin)等都是能夠進行優化的系統資源.此外,如最大文件句柄數,虛擬內存大小,磁盤的塊大小等參數都可能對軟件的性能產生影響.配置虛擬內存界面這里寫圖片描寫敘述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM