Java性能優化的技巧
導語:要對你的 java 代碼進行優化,需要理解 java 不同要素之間的相互作用,以及它是如何與其運行時的操作系統進行交互的。使用下面這五個技巧和資源,開始學習如何分析和優化你的代碼吧。
1。 調整垃圾收集(GC)
由於垃圾收集的複雜性,很難發現你的應用的準確性能。不過,如果你真的想優化你的應用,你應該相應地處理垃圾收集。通用的準則是調整GC設置並同時執行性能分析。
一旦你對結果感到滿意,你可以停止該過程並尋求其他優化方式。確保除了在平均事務處理時間之外,你還留心了異常值。這些異常值是造成Java應用緩慢的真正的罪魁禍首並且很難找到。
此外,你要明白應用運行期間性能下降的效應。在每單個cpu時鐘內的緩慢操作是可以忽略的,但在每單個數據庫事務中的緩慢操作則是非常昂貴的消耗。但是你應該根據性能短板選擇你的優化策略,並應該根據工作負載來優化應用。
2。 正確地選擇適合你的GC算法
讓我們更深入地探討GC優化。畢竟,GC優化是要處理的整個優化問題中最基本的。目前,Java中有四種供你選擇的垃圾收集算法。每種算法滿足不同的需求,因此你要選擇(適合你的需求的)。很多開發人員正是因爲不瞭解GC算法而未能優化他們的應用。
這四個算法分別是串行回收器,並行/吞吐量回收器,CMS回收器和G1回收器。想要了解更多關於每種垃圾收集器的信息及它們是如何工作的,請查看這篇來自Takipi博客的非常棒的文章Garbage Collectors—Serial vs。 Parallel vs。 CMS vs。 G1。 這篇文章同時還討論了Java8對GC算法的影響及其他細節上的改變。
讓我們再回到GC算法上,根據Understanding Java Garbage Collection這篇文章所述,併發標記和清除GC(即"CMS")算法纔是適合網絡服務端應用的最佳算法。並行GC算法適合那些內部可預測的應用。
G1和CMS是併發操作的理想選擇,但仍然會引起(應用)頻繁停頓。實際的選擇取決於你如何取捨。舉例來說,儘管選擇並行算法會帶來更長的GC停頓時間,但相較於其他GC算法,選擇並行算法仍是一個好主意。
3。Java 堆
Java內存堆在迎合內存需求方面擔任了至關重要角色。通常更好的做法是初始時分配最小的堆,然後通過持續的測試不斷增加它的大小。大多數時候優化問題都可以通過增加堆的大小解決,但如果存在大量的GC開銷,則該解決方案不起作用。
GC開銷還會使吞吐量急劇下降,進而使得應用難以形容的慢。此外,及早調整GC可以幫助你避免堆大小分配的問題。開始的時候,你可以選擇任何1GB到8GB的堆大小。當你選擇正確的堆大小,老生代和新生代對象的概念也就不需要了。
總而言之,堆大小應該取決於老生代和新生代對象的比率,之前的優化和對象集合(即所有對象佔用的內存大小)。
4。 關鍵應用優化
關鍵代碼優化是優化你的Java應用最好的方式。如果你的應用對GC和堆優化沒有反應,那麼最好是做架構改進並關注於你的應用是如何處理信息的。使用聰明的算法並管理好對象就能解決大量的問題,包括內存碎片,堆大小問題和垃圾收集的問題。
5。使用最優的函數
Java提供了多個函數來提升算法效率。如果你使用StringBuilder代替簡單的String,你可以得到微乎其微的性能提升。不過,我們還有其他方式在代碼層面進行優化。讓我們看看下面這些優化方法。
使用StringBuilder代替+操作符。
避免使用iterator()。
多使用棧帶來的好處。
避免使用正則表達式,使用Apache Commons Lang作爲代替。
遠離遞歸。遞歸會佔用大量資源!
相關文章
-
Java性能優化的五大技巧
【篇一】公司行政後勤工作計劃一、指導思想:以學校工作意見爲指導,在校長室的統一領導下,認真學習全面貫徹上級有關教育工作的文件精神,進一步明確學校工作"教書育人、管理育人、服務育人"的辦學方向。緊緊圍繞學校工作 -
Java 性能優化的五大技巧
java的性能優化可是一個大課題, 要對你的 java 代碼進行優化,需要理解 java 不同要素之間的相互作用,以及它是如何與其運行時的操作系統進行交互的。下面小編給大家介紹Java 性能優化的五大技巧,歡迎閱讀!性能優化取決於 -
Java性能優化技巧大全
Java性能優化技巧大全1.儘量使用final修飾符。帶有final修飾符的類是不可派生的。在JAVA核心API中,有許多應用final的例子,例如ng。爲String類指定final防止了使用者覆蓋length()方法。另外,如果一個類是final的,則該類所 -
Java編程性能優化技巧分享
針對大家的提問Java編程性能優化技巧有哪些,小編特意收集了以下的解答內容,希望對您有所幫助!更多內容請關注應屆畢業生考試網!1、字符串優化處理(1)String類的特點:不變性、針對常量池的優化(()方法的意義)(2)subString -
Java編程性能優化技巧有哪些
性能優化大部分都是在時間、效率、代碼結構層次等方面的權衡,下面內容由小編爲大家介紹Java編程性能優化技巧,供大家參考! 1.儘量在合適的場合使用單例使用單例可以減輕加載的負擔,縮短加載的時間,提高加載的效率,但並 -
Java開發代碼性能優化是什麼
Java語言作爲靜態面向對象編程語言的代表,極好地實現了面向對象的理論,得以讓大數據開發可以用簡單的思維進行復雜的編程。下面是小編整理的關於Java開發代碼性能優化總結內容,歡迎閱讀!1、儘量指定類,方法的final修飾符 -
13 個提升JavaScript 性能技巧
單 位:述 職 人:職 務:20xx年上半年我任新疆廣匯液化天然氣發展有限責任公司鄯善分公司副總工程師,任職期間主要負責公司運行維護部的組織管理與協調工作及機、電、儀專業設備運行維護工作。按照公司相關制度、運行維護部 -
優化JavaScript腳本的性能的方法
今天陽光明媚,在課間活動時間,老師帶領我們玩了一個有趣的遊戲。遊戲的名字叫瘸腿狐狸要吃雞,同學們一聽可高興了,像一羣快樂的小鳥飛快地衝出教室。我們來到操場上,老師先讓我們圍成一個圓圈,然後給我們講遊戲規則:首先,抽四 -
java性能調優的方法
Java是目前軟件開發領域中使用最廣泛的編程語言之一。Java應用程序在許多垂直領域(銀行、電信、醫療保健等)中都有廣泛使用。Refcard的目的是,幫助開發者通過專注於JVM內部,性能調整原則和最佳實踐。以下是小編爲大家搜 -
Java程序性能的調優
學校法制安全關係到師生生命安全,關係到教育教學工作的正常開展,安全第一,預防爲主是建國以來黨和國家一貫的安全生產方針,也是學校正常工作開展的保障。下面是本站小編帶來關於學校法制安全教育20xx年度工作計劃的內容,希