您好,登錄后才能下訂單哦!
from IBM
Java 性能準(zhǔn)則
在編寫(xiě)Java應(yīng)用程序時(shí),以下是基本的準(zhǔn)則:
監(jiān)視 Java
在AIX 操作系統(tǒng)中有許多工具可以用來(lái)監(jiān)視Java應(yīng)用程序的性能,以下是簡(jiǎn)單的概述。
vmstat
這條命令提供了各種系統(tǒng)資源的信息。它報(bào)告了運(yùn)行隊(duì)列以及等待隊(duì)列中內(nèi)核線程的統(tǒng)計(jì)信息、內(nèi)存使用、頁(yè)面調(diào)度空間、磁盤(pán) I/O、中斷、系統(tǒng)調(diào)用、上下文切換以及 CPU 活動(dòng)。
iostat
這條命令報(bào)告了詳細(xì)的磁盤(pán) I/O 信息。
topas
這條命令報(bào)告了 CPU、網(wǎng)絡(luò)、磁盤(pán) I/O、工作負(fù)載管理器和進(jìn)程活動(dòng)。
tprof -k -s -e -x "sleep 10"
這條命令可被用來(lái)剖析應(yīng)用程序以查明任何可能影響性能的活動(dòng)程序/方法。
ps -mo 線程
這條命令顯示了一個(gè)進(jìn)程或線程綁定于哪一個(gè) CPU。
java -verbose:gc
這個(gè)選項(xiàng)可被用來(lái)檢查垃圾回收對(duì)您的應(yīng)用程序的沖擊。它報(bào)告了垃圾回收所花的總共時(shí)間,平均每一次垃圾回收花費(fèi)時(shí)間,平均每一次垃圾回收收集的內(nèi)存以及平均每一次垃圾回收中的對(duì)象數(shù)。
Java應(yīng)用程序性能調(diào)優(yōu)
建議在運(yùn)行Java應(yīng)用的AIX用戶環(huán)境下,設(shè)置以下環(huán)境變量。
AIXTHREAD_SCOPE=S
用 AIX 4.3.1 啟動(dòng),此變量缺省值為 P。這表示進(jìn)程寬度爭(zhēng)用作用域(M:N)。對(duì)于 Java 應(yīng)用程序,您應(yīng)該設(shè)置這個(gè)值為 S,它表示系統(tǒng)寬度爭(zhēng)用作用域(1:1)。
AIXTHREAD_MUTEX_DEBUG=OFF
用調(diào)試器為使用目的維持一個(gè)活動(dòng)人工干預(yù)列表。
AIXTHERAD_COND_DEBUG=OFF
用調(diào)試器為使用目的維持一個(gè)條件變量列表。
AIXTHREAD_RWLOCK_DEBUG=OFF
pthreads
庫(kù)用調(diào)試器為使用目的維護(hù)一個(gè)包含活動(dòng)互斥鎖定、條件變量以及讀/寫(xiě)鎖定的列表。當(dāng)一個(gè)鎖定初始化,如果列表中沒(méi)有這一鎖定,它被加入到列表中。此列表以
鏈表形式實(shí)現(xiàn),因此當(dāng)列表變大時(shí)通過(guò)搜索它來(lái)確定一個(gè)鎖定是否存在就包含了性能問(wèn)題。問(wèn)題是此列表被鎖定保護(hù),這一鎖定在搜索操作過(guò)程中一直保持。當(dāng)搜索
進(jìn)行時(shí)其它對(duì) pthread_mutex_init() 調(diào)用的子例程必須等待。為了優(yōu)化性能,您應(yīng)當(dāng)將此線程調(diào)試選項(xiàng)設(shè)置為
OFF。它們的缺省值為 ON 。
SPINLOOPTIME=500
spinloop
時(shí)間是一個(gè)進(jìn)程在阻塞前在一個(gè)繁忙的鎖定上可以循環(huán)的次數(shù)。這個(gè)值缺省設(shè)置為 40。如果 tprof 輸出表明 check_lock 例程具有高的
CPU 使用率,并且如果通常鎖定在短時(shí)間內(nèi)可用,您應(yīng)當(dāng)通過(guò)將值設(shè)置為 500 或更高來(lái)提高循環(huán)時(shí)間。
同樣,運(yùn)行Java應(yīng)用的AIX用戶環(huán)境下,推薦以下設(shè)置:
l ulimit -d 不限制
l ulimit -m 不限制
l ulimit -n 不限制
l ulimit -s 不限制
操作系統(tǒng)內(nèi)一定的環(huán)境參數(shù)和設(shè)置可以用來(lái)調(diào)優(yōu) Java 性能。同樣,許多調(diào)優(yōu)系統(tǒng)部件如 CPU、內(nèi)存、網(wǎng)絡(luò)、I/O 等等的技術(shù),可以提高 Java 性能。
為了使得 Java 的性能和可伸縮性盡可能的好,您應(yīng)當(dāng)使用最新可用版本的操作系統(tǒng)和 Java,以及Just-In-Time(JIT)編譯器。
與 Java 相關(guān)的最普通的性能問(wèn)題與垃圾回收機(jī)制有關(guān)。如果 Java 堆太大,則堆將必須駐留在主內(nèi)存外。這將導(dǎo)致頁(yè)面調(diào)度活動(dòng)增加,它將影響 Java 性能。同樣,一個(gè)大的堆可能花很多秒去填充。這意味著,盡管垃圾回收活動(dòng)不頻繁,但與垃圾回收相聯(lián)系的暫停次數(shù)將增加。為了調(diào)優(yōu) Java 虛擬機(jī)(JVM)的堆,使用 java 命令加選項(xiàng) -ms 或 -mx。使用垃圾回收統(tǒng)計(jì)信息來(lái)幫助決定最佳設(shè)置。[@more@]免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。