五種JVM效能最佳化技巧
最佳化Java程式碼需要理解Java中不同元素是如何互動的,以及與作業系統是如何互動的,下面五個技巧幫助你分析和最佳化程式碼。
效能最佳化依賴於許多情況,比如垃圾回收,虛擬機器和底層作業系統設定。有許多工具幫助開發者分析和最佳化,這裡是Java原始碼分析和最佳化工具。
下面是五個技巧建議:
1.微調垃圾回收機制
挖掘到你的應用真正效能是很難的,因為垃圾回收機制很複雜,如果你要最佳化應用,需要首先處理垃圾回收,通常目標是改變GC設定,同時執行調校。
一旦你比較滿意調校結果,就要停止調校,不要再試驗其他最佳化方式,確保平均處理時間符合你的大概要求。
另外你需要理解在執行期間的效能影響點,單次資料庫處理如果有減慢需要值得注意。
2.尋找正確的GC演算法
GC每個不同演算法應對不同需求,GC四種演算法是:序列收集器、並行/吞吐量收集器、CMS收集器和G1收集器。這裡是更多學習垃圾回收機制的資源,也討論了Java 8的GC演算法。
按照這篇文章,CMS(並行標記並交換GC的簡稱)是適合大多數Web應用的演算法,而並行GC是適合有內建可預測模型的應用。
G1和CMS都是併發應用的理想選擇,但是會引起頻繁暫停,需要平衡選擇。
3. Java heap
Java記憶體堆是保證記憶體需要的關鍵方式,開始是很小的記憶體堆分配,持續不斷增加,大部分最佳化問題可以透過增加堆大小解決,但是如果有GC過於頻繁,增加堆記憶體大小不一定能夠解決。
GC過載過於頻繁也會降低吞吐量,使得應用出乎意料地慢,分配堆記憶體大小能夠減輕這個問題,你可以從1GB到8GB選擇堆記憶體大小,老生代和新生代物件也需要考慮,堆大小依賴老生代到新生代的比例。
4.核心應用最佳化
調整應用架構,關注跟蹤你的應用中物件來龍去脈,有助降低記憶體碎片,堆問題和垃圾回收問題。
5.使用最佳化函式
幾種有助提升效能的函式:
(1).使用StringBuilder而不是+運算子
(2).避免使用 iterator().
(3).最大化利用stack棧
(4).避免正規表示式,使用Apache Commons Lang取代
(5).遠離遞迴迴圈,遞迴迴圈是資源密集型。
效能最佳化依賴於許多情況,比如垃圾回收,虛擬機器和底層作業系統設定。有許多工具幫助開發者分析和最佳化,這裡是Java原始碼分析和最佳化工具。
下面是五個技巧建議:
1.微調垃圾回收機制
挖掘到你的應用真正效能是很難的,因為垃圾回收機制很複雜,如果你要最佳化應用,需要首先處理垃圾回收,通常目標是改變GC設定,同時執行調校。
一旦你比較滿意調校結果,就要停止調校,不要再試驗其他最佳化方式,確保平均處理時間符合你的大概要求。
另外你需要理解在執行期間的效能影響點,單次資料庫處理如果有減慢需要值得注意。
2.尋找正確的GC演算法
GC每個不同演算法應對不同需求,GC四種演算法是:序列收集器、並行/吞吐量收集器、CMS收集器和G1收集器。這裡是更多學習垃圾回收機制的資源,也討論了Java 8的GC演算法。
按照這篇文章,CMS(並行標記並交換GC的簡稱)是適合大多數Web應用的演算法,而並行GC是適合有內建可預測模型的應用。
G1和CMS都是併發應用的理想選擇,但是會引起頻繁暫停,需要平衡選擇。
3. Java heap
Java記憶體堆是保證記憶體需要的關鍵方式,開始是很小的記憶體堆分配,持續不斷增加,大部分最佳化問題可以透過增加堆大小解決,但是如果有GC過於頻繁,增加堆記憶體大小不一定能夠解決。
GC過載過於頻繁也會降低吞吐量,使得應用出乎意料地慢,分配堆記憶體大小能夠減輕這個問題,你可以從1GB到8GB選擇堆記憶體大小,老生代和新生代物件也需要考慮,堆大小依賴老生代到新生代的比例。
4.核心應用最佳化
調整應用架構,關注跟蹤你的應用中物件來龍去脈,有助降低記憶體碎片,堆問題和垃圾回收問題。
5.使用最佳化函式
幾種有助提升效能的函式:
(1).使用StringBuilder而不是+運算子
(2).避免使用 iterator().
(3).最大化利用stack棧
(4).避免正規表示式,使用Apache Commons Lang取代
(5).遠離遞迴迴圈,遞迴迴圈是資源密集型。
Start learning how to analyze and optimize your co
[該貼被banq於2016-09-05 19:13修改過]
相關文章
- Laravel 5 框架效能最佳化技巧Laravel框架
- ORACLE SQL效能最佳化系列 (五) (轉)OracleSQL
- 效能最佳化技巧:前半有序時的排序排序
- 【文章筆記】效能最佳化技巧參考筆記
- mysql 效能調優五種方式MySql
- 五種提高SQL效能的方法SQL
- 五種提高 SQL 效能的方法SQL
- Python五種實用的小技巧Python
- jvm系列(五):tomcat效能調優和效能監控(visualvm)JVMTomcatLVM
- CSAPP 第五章 最佳化程式效能APP
- 提高 Java 程式碼效能的各種技巧Java
- JVM最佳化配置JVM
- 【JAVA進階架構師指南】之五:JVM效能調優Java架構JVM
- 程式設計技巧整理:Java程式效能最佳化總結!程式設計Java
- Linux伺服器效能最佳化有哪些常用技巧?Linux伺服器
- 【JVM】JVM系列之執行引擎(五)JVM
- [效能][JVM]jvm垃圾回收機制JVM
- 【SQL 效能最佳化】表的三種連線方式SQL
- 解析MySQL資料庫效能最佳化的六大技巧MySql資料庫
- JVM系列(五) - JVM垃圾回收演算法JVM演算法
- JVM效能優化JVM優化
- JVM效能優化 (一) 初識JVMJVM優化
- 活字格效能最佳化技巧(1)——如何利用資料庫主鍵提升訪問效能資料庫
- 【Python入門教程】五個常見的最佳化SQL的技巧!PythonSQL
- 三種提升Java程式碼效能的簡單技巧 - levelupJava
- MySQL 效能最佳化:8 種常見 SQL 錯誤用法!MySql
- Windows最佳化技巧Windows
- sql最佳化技巧SQL
- 提升網站效能的五種方式,希望你也知道網站
- JVM 效能監控工具JVM
- JVM 學習筆記(五)JVM筆記
- JVM記憶體模型(五)JVM記憶體模型
- JVM效能最佳化 —— 類載入器,手動實現類的熱載入JVM
- 這6種效能最佳化,讓你的程式飛起來!
- 【死磕JVM】五年 整整五年了 該知道JVM載入機制了!JVM
- 【效能最佳化】ORACLE資料庫效能最佳化概述Oracle資料庫
- JVM效能優化(一)JVM技術入門JVM優化
- 最佳化iOS小技巧iOS