摘要:性能調(diào)優(yōu)概述性能優(yōu)化有風(fēng)險和弊端,性能調(diào)優(yōu)必須有明確的目標(biāo),不要為了調(diào)優(yōu)而調(diào)優(yōu)盲目調(diào)優(yōu),風(fēng)險遠(yuǎn)大于收益程序性能的主要表現(xiàn)點(diǎn)執(zhí)行速度程序的反映是否迅速,響應(yīng)時間是否足夠短內(nèi)存分配內(nèi)存分配是否合理,是否過多地消耗內(nèi)存或者存在內(nèi)存泄漏啟動時間程序
[TOC]
Java性能調(diào)優(yōu)概述性能優(yōu)化有風(fēng)險和弊端,性能調(diào)優(yōu)必須有明確的目標(biāo),不要為了調(diào)優(yōu)而調(diào)優(yōu)!!!盲目調(diào)優(yōu),風(fēng)險遠(yuǎn)大于收益!!!程序性能的主要表現(xiàn)點(diǎn)
執(zhí)行速度:程序的反映是否迅速,響應(yīng)時間是否足夠短
內(nèi)存分配:內(nèi)存分配是否合理,是否過多地消耗內(nèi)存或者存在內(nèi)存泄漏
啟動時間:程序從運(yùn)行到可以正常處理業(yè)務(wù)需要花費(fèi)多少時間
負(fù)載承受能力:當(dāng)系統(tǒng)壓力上升時,系統(tǒng)的執(zhí)行速度、響應(yīng)時間的上升曲線是否平緩
衡量程序性能的主要指標(biāo):執(zhí)行時間:程序從運(yùn)行到結(jié)束所使用的時間
CPU時間:函數(shù)或者線程占用CPU的時間
內(nèi)存分配:程序在運(yùn)行時占用內(nèi)容的空間
磁盤吞吐量:描述I/O的使用情況
網(wǎng)絡(luò)吞吐量:描述網(wǎng)絡(luò)的使用情況
響應(yīng)時間:系統(tǒng)對用戶行為或者事件做出響應(yīng)的時間,響應(yīng)時間越短,性能越好
有可能成為系統(tǒng)性能瓶頸的幾個方面:磁盤I/O:磁盤I/O讀寫的速度比內(nèi)容慢很多,如果程序中需要等待磁盤I/O處理,低效的磁盤I/O操作會拖累整個系統(tǒng)
網(wǎng)絡(luò)操作:由于網(wǎng)絡(luò)環(huán)境的不確定性,導(dǎo)致網(wǎng)絡(luò)數(shù)據(jù)讀寫的操作可能比本地磁盤I/O更慢,如果,網(wǎng)絡(luò)操作處理不當(dāng),也回成為系統(tǒng)瓶頸
CPU:對計算資源要求較高的應(yīng)用,由于長時間、不間斷地大量占用CPU資源,那么對CPU的爭奪將導(dǎo)致系統(tǒng)性能問題
異常:Java中的異常捕獲和處理都是非常消耗資源的,如果代碼中高頻率的異常處理,那么代碼的整體系統(tǒng)能就會明顯下降
數(shù)據(jù)庫:大量數(shù)據(jù)對數(shù)據(jù)庫的讀寫操作是相當(dāng)費(fèi)時的,而往往很多代碼中需要等到數(shù)據(jù)庫操作完成之后才可以進(jìn)行后續(xù)操作,這種緩慢的同步操作也將會成為系統(tǒng)瓶頸
鎖競爭:對于高并發(fā)的系統(tǒng)來講,鎖競爭是相當(dāng)激烈的,這對性能是一個極大的打擊,鎖競爭會明顯增加線程上下文切換的開銷,而往往這些開銷都是與應(yīng)用需求無關(guān)的系統(tǒng)開銷,白白占用CPU資源,帶來不了任何好處
內(nèi)存:一般情況,只要應(yīng)用程序設(shè)計合理,內(nèi)存在讀寫速度上不太可能成為性能瓶頸。除非程序中進(jìn)行了高頻率的內(nèi)存交換和掃描。內(nèi)存成為系統(tǒng)瓶頸的最可能的情況就是內(nèi)存大小不足。如果應(yīng)用程序中將一些常用的核心數(shù)據(jù)存入內(nèi)存,這個一定程度上會降低程序性能,因此,在將常用數(shù)據(jù)寫入內(nèi)存的時候,要注意一些優(yōu)化處理
性能調(diào)優(yōu)的層次設(shè)計調(diào)優(yōu):處于所有調(diào)優(yōu)手段的上層,在軟件開發(fā)之前進(jìn)行,軟件設(shè)計和架構(gòu)對軟件整體質(zhì)量有決定性的影響,所以,設(shè)計調(diào)優(yōu)對系統(tǒng)性能的影響也是最大的。其他方面的優(yōu)化都是對系統(tǒng)微觀層面上量的優(yōu)化,而設(shè)計優(yōu)化是對系統(tǒng)在宏觀方面上質(zhì)的優(yōu)化。一個良好的系統(tǒng)設(shè)計可以規(guī)避很多潛在的性能問題,因此,盡可能多花時間在系統(tǒng)設(shè)計上,是創(chuàng)建高性能程序的關(guān)鍵
代碼調(diào)優(yōu):發(fā)生在軟件開發(fā)的過程中、軟件開發(fā)完成后、軟件維護(hù)過程中,對代碼進(jìn)行改進(jìn)和優(yōu)化,要求開發(fā)員熟悉語言的API、在合適場景使用正確的API、對算法和數(shù)據(jù)結(jié)構(gòu)靈活運(yùn)用
JVM調(diào)優(yōu):需要對JVM運(yùn)行原理和基本內(nèi)存結(jié)構(gòu)有一定了解,然后依據(jù)應(yīng)用程序的特點(diǎn),設(shè)置合理的JVM啟動參數(shù)
數(shù)據(jù)庫調(diào)優(yōu):主要包括在應(yīng)用層對SQL語句進(jìn)行優(yōu)化,對數(shù)據(jù)庫進(jìn)行優(yōu)化(設(shè)計具有良好表結(jié)構(gòu)的數(shù)據(jù)庫),對數(shù)據(jù)庫軟件進(jìn)行優(yōu)化(比如使用Oracle數(shù)據(jù)庫,需要設(shè)置合理大小的共享池、緩存緩沖區(qū)等)
操作系統(tǒng)調(diào)優(yōu):不同類型的操作系統(tǒng),調(diào)優(yōu)的手段和參數(shù)可能會有所不同。在主流額UNIX系統(tǒng)中,共享內(nèi)存段、信號量、共享內(nèi)存最大值、共享內(nèi)存最小值等都是可以進(jìn)行優(yōu)化的系統(tǒng)資源
基本調(diào)優(yōu)策略和手段明確性能優(yōu)化的目標(biāo),確定優(yōu)化的對象和最終目的(首先定位到系統(tǒng)的性能瓶頸,確定相關(guān)代碼進(jìn)行代碼優(yōu)化,如已無代碼優(yōu)化空間,則要考慮其他方面的優(yōu)化:JVM優(yōu)化、數(shù)據(jù)庫層面的優(yōu)化、操作系統(tǒng)層面的優(yōu)化等)
對性能優(yōu)化要進(jìn)行嚴(yán)格的測試
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/72284.html
摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...
摘要:一內(nèi)存調(diào)優(yōu)主要的目的是減小的頻率和的次數(shù)。調(diào)優(yōu)工具之主要用來輸出中運(yùn)行的進(jìn)程狀態(tài)信息。調(diào)優(yōu)工具之和用來查看堆內(nèi)存使用狀況,一般結(jié)合使用。 一、jvm內(nèi)存調(diào)優(yōu) 主要的...
摘要:使用簽署免費(fèi)證書后端掘金本文操作在操作系統(tǒng)下完成,需要和超文本傳輸安全協(xié)議英語,縮寫,常稱為,紅黑樹深入剖析及實現(xiàn)后端掘金紅黑樹是平衡二叉查找樹的一種。 使用 Lets Encrypt 簽署免費(fèi) Https 證書 - 后端 - 掘金 本文操作在Linux操作系統(tǒng)下完成,需要Python和Nginx 超文本傳輸安全協(xié)議(英語:Hypertext Transfer Protocol Sec...
閱讀 1358·2021-09-24 10:26
閱讀 3671·2021-09-06 15:02
閱讀 626·2019-08-30 14:18
閱讀 584·2019-08-30 12:44
閱讀 3125·2019-08-30 10:48
閱讀 1949·2019-08-29 13:09
閱讀 2002·2019-08-29 11:30
閱讀 2288·2019-08-26 13:36