- java性能調(diào)優(yōu)的方法 推薦度:
- 相關(guān)推薦
java性能調(diào)優(yōu)的方法
Java是目前軟件開(kāi)發(fā)領(lǐng)域中使用最廣泛的編程語(yǔ)言之一。Java應(yīng)用程序在許多垂直領(lǐng)域(銀行、電信、醫(yī)療保健等)中都有廣泛使用。Refcard的目的是,幫助開(kāi)發(fā)者通過(guò)專注于JVM內(nèi)部,性能調(diào)整原則和最佳實(shí)踐。以下是小編為大家搜索整理java性能調(diào)優(yōu)的方法,希望能給大家?guī)?lái)幫助!更多精彩內(nèi)容請(qǐng)及時(shí)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!
程序性能的主要表現(xiàn)點(diǎn):
執(zhí)行速度:程序的反映是否迅速,響應(yīng)時(shí)間是否足夠短
內(nèi)存分配:內(nèi)存分配是否合理,是否過(guò)多地消耗內(nèi)存或者存在內(nèi)存泄漏
啟動(dòng)時(shí)間:程序從運(yùn)行到可以正常處理業(yè)務(wù)需要花費(fèi)多少時(shí)間
負(fù)載承受能力:當(dāng)系統(tǒng)壓力上升時(shí),系統(tǒng)的執(zhí)行速度、響應(yīng)時(shí)間的上升曲線是否平緩
衡量程序性能的主要指標(biāo):
執(zhí)行時(shí)間:程序從運(yùn)行到結(jié)束所使用的時(shí)間
CPU時(shí)間:函數(shù)或者線程占用CPU的時(shí)間
內(nèi)存分配:程序在運(yùn)行時(shí)占用內(nèi)容的空間
磁盤(pán)吞吐量:描述I/O的使用情況
網(wǎng)絡(luò)吞吐量:描述網(wǎng)絡(luò)的使用情況
響應(yīng)時(shí)間:系統(tǒng)對(duì)用戶行為或者事件做出響應(yīng)的時(shí)間,響應(yīng)時(shí)間越短,性能越好
有可能成為系統(tǒng)性能瓶頸的幾個(gè)方面:
磁盤(pán)I/O:磁盤(pán)I/O讀寫(xiě)的速度比內(nèi)容慢很多,如果程序中需要等待磁盤(pán)I/O處理,低效的磁盤(pán)I/O操作會(huì)拖累整個(gè)系統(tǒng)
網(wǎng)絡(luò)操作:由于網(wǎng)絡(luò)環(huán)境的不確定性,導(dǎo)致網(wǎng)絡(luò)數(shù)據(jù)讀寫(xiě)的操作可能比本地磁盤(pán)I/O更慢,如果,網(wǎng)絡(luò)操作處理不當(dāng),也回成為系統(tǒng)瓶頸
CPU:對(duì)計(jì)算資源要求較高的應(yīng)用,由于長(zhǎng)時(shí)間、不間斷地大量占用CPU資源,那么對(duì)CPU的爭(zhēng)奪將導(dǎo)致系統(tǒng)性能問(wèn)題
異常:Java中的異常捕獲和處理都是非常消耗資源的,如果代碼中高頻率的異常處理,那么代碼的整體系統(tǒng)能就會(huì)明顯下降
數(shù)據(jù)庫(kù):大量數(shù)據(jù)對(duì)數(shù)據(jù)庫(kù)的讀寫(xiě)操作是相當(dāng)費(fèi)時(shí)的,而往往很多代碼中需要等到數(shù)據(jù)庫(kù)操作完成之后才可以進(jìn)行后續(xù)操作,這種緩慢的同步操作也將會(huì)成為系統(tǒng)瓶頸
鎖競(jìng)爭(zhēng):對(duì)于高并發(fā)的系統(tǒng)來(lái)講,鎖競(jìng)爭(zhēng)是相當(dāng)激烈的,這對(duì)性能是一個(gè)極大的打擊,鎖競(jìng)爭(zhēng)會(huì)明顯增加線程上下文切換的開(kāi)銷,而往往這些開(kāi)銷都是與應(yīng)用需求無(wú)關(guān)的系統(tǒng)開(kāi)銷,白白占用CPU資源,帶來(lái)不了任何好處
內(nèi)存:一般情況,只要應(yīng)用程序設(shè)計(jì)合理,內(nèi)存在讀寫(xiě)速度上不太可能成為性能瓶頸。除非程序中進(jìn)行了高頻率的內(nèi)存交換和掃描。內(nèi)存成為系統(tǒng)瓶頸的最可能的情況就是內(nèi)存大小不足。如果應(yīng)用程序中將一些常用的核心數(shù)據(jù)存入內(nèi)存,這個(gè)一定程度上會(huì)降低程序性能,因此,在將常用數(shù)據(jù)寫(xiě)入內(nèi)存的時(shí)候,要注意一些優(yōu)化處理
性能調(diào)優(yōu)的層次:
設(shè)計(jì)調(diào)優(yōu):處于所有調(diào)優(yōu)手段的上層,在軟件開(kāi)發(fā)之前進(jìn)行,軟件設(shè)計(jì)和架構(gòu)對(duì)軟件整體質(zhì)量有決定性的影響,所以,設(shè)計(jì)調(diào)優(yōu)對(duì)系統(tǒng)性能的影響也是最大的。其他方面的優(yōu)化都是對(duì)系統(tǒng)微觀層面上量的優(yōu)化,而設(shè)計(jì)優(yōu)化是對(duì)系統(tǒng)在宏觀方面上質(zhì)的優(yōu)化。一個(gè)良好的系統(tǒng)設(shè)計(jì)可以規(guī)避很多潛在的性能問(wèn)題,因此,盡可能多花時(shí)間在系統(tǒng)設(shè)計(jì)上,是創(chuàng)建高性能程序的關(guān)鍵
代碼調(diào)優(yōu):發(fā)生在軟件開(kāi)發(fā)的過(guò)程中、軟件開(kāi)發(fā)完成后、軟件維護(hù)過(guò)程中,對(duì)代碼進(jìn)行改進(jìn)和優(yōu)化,要求開(kāi)發(fā)員熟悉語(yǔ)言的API、在合適場(chǎng)景使用正確的API、對(duì)算法和數(shù)據(jù)結(jié)構(gòu)靈活運(yùn)用
JVM調(diào)優(yōu):需要對(duì)JVM運(yùn)行原理和基本內(nèi)存結(jié)構(gòu)有一定了解,然后依據(jù)應(yīng)用程序的特點(diǎn),設(shè)置合理的JVM啟動(dòng)參數(shù)
數(shù)據(jù)庫(kù)調(diào)優(yōu):主要包括在應(yīng)用層對(duì)SQL語(yǔ)句進(jìn)行優(yōu)化,對(duì)數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化(設(shè)計(jì)具有良好表結(jié)構(gòu)的數(shù)據(jù)庫(kù)),對(duì)數(shù)據(jù)庫(kù)軟件進(jìn)行優(yōu)化(比如使用Oracle數(shù)據(jù)庫(kù),需要設(shè)置合理大小的共享池、緩存緩沖區(qū)等)
操作系統(tǒng)調(diào)優(yōu):不同類型的操作系統(tǒng),調(diào)優(yōu)的手段和參數(shù)可能會(huì)有所不同。在主流額UNIX系統(tǒng)中,共享內(nèi)存段、信號(hào)量、共享內(nèi)存最大值、共享內(nèi)存最小值等都是可以進(jìn)行優(yōu)化的系統(tǒng)資源
基本調(diào)優(yōu)策略和手段
明確性能優(yōu)化的目標(biāo),確定優(yōu)化的對(duì)象和最終目的(首先定位到系統(tǒng)的性能瓶頸,確定相關(guān)代碼進(jìn)行代碼優(yōu)化,如已無(wú)代碼優(yōu)化空間,則要考慮其他方面的優(yōu)化:JVM優(yōu)化、數(shù)據(jù)庫(kù)層面的優(yōu)化、操作系統(tǒng)層面的優(yōu)化等)
對(duì)性能優(yōu)化要進(jìn)行嚴(yán)格的測(cè)試
【java性能調(diào)優(yōu)的方法】相關(guān)文章:
關(guān)于java性能調(diào)優(yōu)的方法10-26
分析PHP性能調(diào)優(yōu)實(shí)戰(zhàn)09-14
Java性能優(yōu)化的技巧10-19
Java性能優(yōu)化技巧大全07-12
Java編程性能優(yōu)化技巧分享08-11
Java 性能優(yōu)化的五大技巧08-12
Java編程性能優(yōu)化技巧有哪些08-07
Java性能優(yōu)化的五大技巧08-25