應(yīng)用服務(wù)器資源的使用情況
JVM堆的使用情況
系統(tǒng)資源的使用情況
數(shù)據(jù)庫(kù)資源的使用情況
網(wǎng)絡(luò)活動(dòng)
這些現(xiàn)象表明J2EE應(yīng)用依賴很多外部資源,并且是運(yùn)行在一個(gè)層次化的執(zhí)行模式的環(huán)境中:
由于java虛擬機(jī)和應(yīng)用服務(wù)器掩蓋了操作系統(tǒng)和硬件的特性,所以在設(shè)計(jì)軟件系統(tǒng)時(shí),架構(gòu)工程師更應(yīng)該深刻理解整個(gè)操作環(huán)境。
在設(shè)計(jì)軟件系統(tǒng)時(shí),架構(gòu)工程師應(yīng)把性能和可擴(kuò)展性放在首位,然后開始尋找容易解決的問題,反應(yīng)時(shí)間緩慢通常的原因是訪問數(shù)據(jù)庫(kù)效率低和過多地調(diào)用遠(yuǎn)程對(duì)象和方法。接下來,架構(gòu)工程師可繼續(xù)尋找不明顯的原因,例如算法的累積影響和不必要的開銷。
現(xiàn)在市場(chǎng)上的各個(gè)J2EE應(yīng)用服務(wù)器有很多配置項(xiàng)目。這里只簡(jiǎn)單介紹一些常見的性能優(yōu)化配置項(xiàng)目。
很多應(yīng)用服務(wù)器都有一些與J2EE規(guī)范有關(guān)的操作系統(tǒng)配置項(xiàng)目或非標(biāo)準(zhǔn)的特性,這可以提高系統(tǒng)性能。應(yīng)該化時(shí)間來理解這些性能配置。
Java虛擬機(jī)堆和垃圾回收設(shè)置
任何Java應(yīng)用的性能調(diào)整基礎(chǔ)都涉及到堆的大小和垃圾回收設(shè)置。(這里主要討論Sun HotSpor JVM).
堆可分為三代,年輕的(新的),年老的和持久的。Hotspot JVM的內(nèi)存基本配置包括最大堆大小,初始堆大小和年輕一代堆的大小。當(dāng)配置最大堆大小時(shí)可參考下面一些指導(dǎo):
最大大小應(yīng)小于物理內(nèi)存,避免虛存的頁(yè)面調(diào)度。
需要減去其他進(jìn)程使用的內(nèi)存
在負(fù)載測(cè)試時(shí)進(jìn)行優(yōu)化
注意不要將最大堆大小設(shè)置得過大。堆越大,內(nèi)存中保存的對(duì)象越多。內(nèi)存中對(duì)象越多,回收過程時(shí)間越長(zhǎng)。
配置初試堆大小的一般性策略包括:
將初始大小設(shè)置為最大堆大小
將初始大小設(shè)置為最大堆大小的1/4到1/2
對(duì)于年輕一代堆大小,Sun 推薦是設(shè)置為最大堆大小的1/3。
也可以選擇不同的垃圾回收算法。首先是增量垃圾回收。該算法的意思是減少單個(gè)對(duì)象回收停頓時(shí)間,這樣的結(jié)果是整體回收性能的下降。該算法將相互引用的對(duì)象分組,然后嘗試按組回收。嘗試回收的部分越小,回收處理的時(shí)間往往會(huì)越少。
1.4.1版的HotSpot JVM增加了兩個(gè)垃圾回收算法:并行算法和并發(fā)算法。
在年輕一代堆中實(shí)現(xiàn)了并行算法。在多處理器的機(jī)器上,這種回收算法使用了多線程來提高性能。雖然這個(gè)算法會(huì)暫停所有的應(yīng)用線程,但是由于利用了多個(gè)CPU使得回收時(shí)間非常快。在年輕一代堆中,該算法顯著地減少了回收帶來的停頓。
在年老一代堆中實(shí)現(xiàn)了并發(fā)算法。在應(yīng)用中最大限度地執(zhí)行并發(fā)?;厥者^程分為4個(gè)階段,覆蓋了可回收對(duì)象的標(biāo)記和清除操作。前兩個(gè)過程會(huì)暫停應(yīng)用線程,后兩階段可與應(yīng)用并發(fā)執(zhí)行。并發(fā)垃圾回收算法的"最大限度并發(fā)"特點(diǎn)可以使JVM利用更大的堆和多個(gè)CPU。因此應(yīng)關(guān)注由于采用缺省的mark-compact(標(biāo)記-壓縮)和stop-the-world(停頓所有處理)等垃圾回收算法所帶來的延遲和吞吐量問題。
推薦:構(gòu)建高性能J2EE應(yīng)用的五種核心策略>>
處理線程
(出處:http://m.survivalescaperooms.com)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注