JAVA效能最佳化的五種方式

來源:互聯網
上載者:User

標籤:調優   array   訊號量   使用   down   檔案讀寫   迴圈   應用   class   

一,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)等都是能夠進行最佳化的系統資源.此外,如最大檔案控制代碼數,虛擬記憶體大小,磁碟的塊大小等參數都可能對軟體的效能產生影響.配置虛擬記憶體介面

JAVA效能最佳化的五種方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.