淺談AIX環(huán)境下的Java性能調(diào)優(yōu)

from IBM

創(chuàng)新互聯(lián)公司擁有10年成都網(wǎng)站建設(shè)工作經(jīng)驗(yàn),為各大企業(yè)提供成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)服務(wù),對于網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、成都App制作、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、空間域名等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營銷、管理等網(wǎng)站化運(yùn)作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項(xiàng)目的能力。

Java 性能準(zhǔn)則

在編寫Java應(yīng)用程序時(shí),以下是基本的準(zhǔn)則:

  • 使用字符串緩沖區(qū)而不是字符串連接,當(dāng)進(jìn)行連續(xù)字符串操作時(shí)要避免不必要地創(chuàng)建那些最終必須經(jīng)過垃圾回收的對象。
  • 避免連續(xù)寫入 Java 控制臺以減少字符串操作、文本格式化以及輸出的花費(fèi)。
  • 必要時(shí)通過使用變量的原語類型來避免對象創(chuàng)建和操作的花費(fèi)。
  • 經(jīng)常高速緩存用過的對象以減少必須的垃圾回收數(shù)量,并且避免重復(fù)創(chuàng)建對象的需求。
  • 盡可能分組本地操作以減少 Java 本地接口(JNI)的調(diào)用。
  • 只有在必要時(shí)再使用同步方法,以此限制在 JVM 和操作系統(tǒng)中的多任務(wù)。
  • 除非必要避免調(diào)用垃圾回收器。如果您必須調(diào)用它,只有在空閑時(shí)間或一些非關(guān)鍵階段再這樣做。
  • 可能時(shí)使用整型而不是長整型,因?yàn)?32 位操作快于 64 位。
  • 可能時(shí)申明方法為 final。JVM 處理 final 的方法較好。
  • 當(dāng)創(chuàng)建常量時(shí)為了減少變量需要初始化的次數(shù),使用關(guān)鍵字 static final。
  • 避免不必要的“casts”和“instanceof”引用,因?yàn)樵?Java 中銷毀操作不是在編譯時(shí)而是在運(yùn)行時(shí)執(zhí)行的。
  • 當(dāng)數(shù)組可以滿足要求時(shí)盡可能避免使用向量。
  • 從向量末端添加和刪除項(xiàng)以得到較高性能。
  • 使用 -O 選項(xiàng)編譯 Java 文件。
  • 避免在循環(huán)中分配對象。
  • 使用緩沖區(qū) I/O 并調(diào)優(yōu)緩沖區(qū)大小。
  • 使用連接池和準(zhǔn)備緩存聲明進(jìn)行數(shù)據(jù)庫訪問。
  • 使用連接池連接到數(shù)據(jù)庫并重用連接而不是重復(fù)打開和關(guān)閉連接。
  • 最大化線程生存期并最小化線程創(chuàng)建和銷毀循環(huán)。
  • 最小化共享資源的爭用。
  • 最小化短生存期對象的創(chuàng)建。
  • 避免遠(yuǎn)程方法調(diào)用。
  • 使用回調(diào)以避免阻塞遠(yuǎn)程方法調(diào)用。
  • 避免創(chuàng)建只用來訪問一個(gè)方法的對象。
  • 盡可能保持同步方法處于循環(huán)外。
  • 在數(shù)據(jù)庫中以 Unicode 形式存儲字符串和字符數(shù)據(jù)。
  • 記錄 CLASSPATH 以便最常用的庫先出現(xiàn)。

監(jiān)視 Java

在AIX 操作系統(tǒng)中有許多工具可以用來監(jiān)視Java應(yīng)用程序的性能,以下是簡單的概述。

vmstat
這條命令提供了各種系統(tǒng)資源的信息。它報(bào)告了運(yùn)行隊(duì)列以及等待隊(duì)列中內(nèi)核線程的統(tǒng)計(jì)信息、內(nèi)存使用、頁面調(diào)度空間、磁盤 I/O、中斷、系統(tǒng)調(diào)用、上下文切換以及 CPU 活動。

iostat
這條命令報(bào)告了詳細(xì)的磁盤 I/O 信息。

topas
這條命令報(bào)告了 CPU、網(wǎng)絡(luò)、磁盤 I/O、工作負(fù)載管理器和進(jìn)程活動。

tprof -k -s -e -x "sleep 10"
這條命令可被用來剖析應(yīng)用程序以查明任何可能影響性能的活動程序/方法。

ps -mo 線程
這條命令顯示了一個(gè)進(jìn)程或線程綁定于哪一個(gè) CPU。

java -verbose:gc
這個(gè)選項(xiàng)可被用來檢查垃圾回收對您的應(yīng)用程序的沖擊。它報(bào)告了垃圾回收所花的總共時(shí)間,平均每一次垃圾回收花費(fèi)時(shí)間,平均每一次垃圾回收收集的內(nèi)存以及平均每一次垃圾回收中的對象數(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 啟動,此變量缺省值為 P。這表示進(jìn)程寬度爭用作用域(M:N)。對于 Java 應(yīng)用程序,您應(yīng)該設(shè)置這個(gè)值為 S,它表示系統(tǒng)寬度爭用作用域(1:1)。

AIXTHREAD_MUTEX_DEBUG=OFF
用調(diào)試器為使用目的維持一個(gè)活動人工干預(yù)列表。

AIXTHERAD_COND_DEBUG=OFF
用調(diào)試器為使用目的維持一個(gè)條件變量列表。

AIXTHREAD_RWLOCK_DEBUG=OFF
pthreads 庫用調(diào)試器為使用目的維護(hù)一個(gè)包含活動互斥鎖定、條件變量以及讀/寫鎖定的列表。當(dāng)一個(gè)鎖定初始化,如果列表中沒有這一鎖定,它被加入到列表中。此列表以 鏈表形式實(shí)現(xiàn),因此當(dāng)列表變大時(shí)通過搜索它來確定一個(gè)鎖定是否存在就包含了性能問題。問題是此列表被鎖定保護(hù),這一鎖定在搜索操作過程中一直保持。當(dāng)搜索 進(jìn)行時(shí)其它對 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)通過將值設(shè)置為 500 或更高來提高循環(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è)置可以用來調(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)的最普通的性能問題與垃圾回收機(jī)制有關(guān)。如果 Java 堆太大,則堆將必須駐留在主內(nèi)存外。這將導(dǎo)致頁面調(diào)度活動增加,它將影響 Java 性能。同樣,一個(gè)大的堆可能花很多秒去填充。這意味著,盡管垃圾回收活動不頻繁,但與垃圾回收相聯(lián)系的暫停次數(shù)將增加。為了調(diào)優(yōu) Java 虛擬機(jī)(JVM)的堆,使用 java 命令加選項(xiàng) -ms 或 -mx。使用垃圾回收統(tǒng)計(jì)信息來幫助決定最佳設(shè)置。[@more@]

網(wǎng)頁題目:淺談AIX環(huán)境下的Java性能調(diào)優(yōu)
本文地址:http://muchs.cn/article24/ihcoje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、小程序開發(fā)網(wǎng)站內(nèi)鏈、虛擬主機(jī)、營銷型網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化