亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

java語言

Java性能優(yōu)化的技巧

時(shí)間:2024-10-19 18:17:34 java語言 我要投稿

Java性能優(yōu)化的技巧

  導(dǎo)語:要對(duì)你的 java 代碼進(jìn)行優(yōu)化,需要理解 java 不同要素之間的相互作用,以及它是如何與其運(yùn)行時(shí)的操作系統(tǒng)進(jìn)行交互的。使用下面這五個(gè)技巧和資源,開始學(xué)習(xí)如何分析和優(yōu)化你的代碼吧。

  1。 調(diào)整垃圾收集(GC)

  由于垃圾收集的復(fù)雜性,很難發(fā)現(xiàn)你的應(yīng)用的準(zhǔn)確性能。不過,如果你真的想優(yōu)化你的應(yīng)用,你應(yīng)該相應(yīng)地處理垃圾收集。通用的準(zhǔn)則是調(diào)整GC設(shè)置并同時(shí)執(zhí)行性能分析。

  一旦你對(duì)結(jié)果感到滿意,你可以停止該過程并尋求其他優(yōu)化方式。確保除了在平均事務(wù)處理時(shí)間之外,你還留心了異常值。這些異常值是造成Java應(yīng)用緩慢的真正的罪魁禍?zhǔn)撞⑶液茈y找到。

  此外,你要明白應(yīng)用運(yùn)行期間性能下降的效應(yīng)。在每單個(gè)cpu時(shí)鐘內(nèi)的緩慢操作是可以忽略的,但在每單個(gè)數(shù)據(jù)庫事務(wù)中的緩慢操作則是非常昂貴的消耗。但是你應(yīng)該根據(jù)性能短板選擇你的優(yōu)化策略,并應(yīng)該根據(jù)工作負(fù)載來優(yōu)化應(yīng)用。

  2。 正確地選擇適合你的GC算法

  讓我們更深入地探討GC優(yōu)化。畢竟,GC優(yōu)化是要處理的整個(gè)優(yōu)化問題中最基本的。目前,Java中有四種供你選擇的垃圾收集算法。每種算法滿足不同的需求,因此你要選擇(適合你的需求的)。很多開發(fā)人員正是因?yàn)椴涣私釭C算法而未能優(yōu)化他們的應(yīng)用。

  這四個(gè)算法分別是串行回收器,并行/吞吐量回收器,CMS回收器和G1回收器。想要了解更多關(guān)于每種垃圾收集器的信息及它們是如何工作的,請(qǐng)查看這篇來自Takipi博客的非常棒的文章Garbage Collectors—Serial vs。 Parallel vs。 CMS vs。 G1。 這篇文章同時(shí)還討論了Java8對(duì)GC算法的影響及其他細(xì)節(jié)上的改變。

  讓我們?cè)倩氐紾C算法上,根據(jù)Understanding Java Garbage Collection這篇文章所述,并發(fā)標(biāo)記和清除GC(即"CMS")算法才是適合網(wǎng)絡(luò)服務(wù)端應(yīng)用的最佳算法。并行GC算法適合那些內(nèi)部可預(yù)測(cè)的應(yīng)用。

  G1和CMS是并發(fā)操作的理想選擇,但仍然會(huì)引起(應(yīng)用)頻繁停頓。實(shí)際的選擇取決于你如何取舍。舉例來說,盡管選擇并行算法會(huì)帶來更長的GC停頓時(shí)間,但相較于其他GC算法,選擇并行算法仍是一個(gè)好主意。

  3。Java 堆

  Java內(nèi)存堆在迎合內(nèi)存需求方面擔(dān)任了至關(guān)重要角色。通常更好的做法是初始時(shí)分配最小的堆,然后通過持續(xù)的測(cè)試不斷增加它的大小。大多數(shù)時(shí)候優(yōu)化問題都可以通過增加堆的大小解決,但如果存在大量的GC開銷,則該解決方案不起作用。

  GC開銷還會(huì)使吞吐量急劇下降,進(jìn)而使得應(yīng)用難以形容的慢。此外,及早調(diào)整GC可以幫助你避免堆大小分配的問題。開始的時(shí)候,你可以選擇任何1GB到8GB的堆大小。當(dāng)你選擇正確的堆大小,老生代和新生代對(duì)象的概念也就不需要了。

  總而言之,堆大小應(yīng)該取決于老生代和新生代對(duì)象的比率,之前的GC優(yōu)化和對(duì)象集合(即所有對(duì)象占用的內(nèi)存大小)。

  4。 關(guān)鍵應(yīng)用優(yōu)化

  關(guān)鍵代碼優(yōu)化是優(yōu)化你的Java應(yīng)用最好的方式。如果你的應(yīng)用對(duì)GC和堆優(yōu)化沒有反應(yīng),那么最好是做架構(gòu)改進(jìn)并關(guān)注于你的應(yīng)用是如何處理信息的。使用聰明的算法并管理好對(duì)象就能解決大量的問題,包括內(nèi)存碎片,堆大小問題和垃圾收集的問題。

  5。使用最優(yōu)的函數(shù)

  Java提供了多個(gè)函數(shù)來提升算法效率。如果你使用StringBuilder代替簡單的String,你可以得到微乎其微的性能提升。不過,我們還有其他方式在代碼層面進(jìn)行優(yōu)化。讓我們看看下面這些優(yōu)化方法。

  使用StringBuilder代替+操作符。

  避免使用iterator()。

  多使用棧帶來的好處。

  避免使用正則表達(dá)式,使用Apache Commons Lang作為代替。

  遠(yuǎn)離遞歸。遞歸會(huì)占用大量資源!


【Java性能優(yōu)化的技巧】相關(guān)文章:

Java性能優(yōu)化技巧大全07-12

java性能調(diào)優(yōu)的方法09-26

優(yōu)化JavaScript腳本的性能的方法09-03

關(guān)于java性能調(diào)優(yōu)的方法10-26

PHP程序性能優(yōu)化的方法10-29

如何優(yōu)化C程序性能04-27

java抽象技巧09-24

Java語言的學(xué)習(xí)技巧08-11

Dreamweaver網(wǎng)頁優(yōu)化的技巧05-25

Windows XP操作系統(tǒng)內(nèi)存性能優(yōu)化10-08