weblogic?Server內(nèi)部結(jié)構(gòu)圖:

(一)??原理簡(jiǎn)單說(shuō)明
服務(wù)器啟動(dòng),就會(huì)綁定到相應(yīng)的端口,并為一個(gè)端口分配一個(gè)線程以接受連接請(qǐng)求,一旦服務(wù)器接受到連接請(qǐng)求并建立好連接以后,監(jiān)聽線程將處理權(quán)交給套接字復(fù)用器,套接字復(fù)用器進(jìn)行一定的處理,并會(huì)負(fù)責(zé)選擇利用那個(gè)執(zhí)行隊(duì)列并將請(qǐng)求置入其中。當(dāng)有一個(gè)請(qǐng)求進(jìn)入執(zhí)行隊(duì)列,就會(huì)有一個(gè)空閑的執(zhí)行縣城從該隊(duì)列里面取走并向調(diào)用者返回結(jié)果。
(二)??執(zhí)行隊(duì)列和執(zhí)行線程的相關(guān)配置
執(zhí)行線程數(shù)量有一定的限制,在服務(wù)器啟動(dòng)的時(shí)候,就已經(jīng)形成了一個(gè)含有一定數(shù)量執(zhí)行線程的池,執(zhí)行線程可能跨servlet,ejb和jdbc等,由于執(zhí)行線程僅當(dāng)程序成功結(jié)束或者出現(xiàn)異常才能被釋放繼續(xù)處理其他請(qǐng)求,所以如果執(zhí)行線程執(zhí)行的不夠快,而請(qǐng)求又多的情況下,就會(huì)造成執(zhí)行隊(duì)列的阻塞。
相關(guān)的配置信息有:
server菜單—〉configuration頁(yè)---〉高級(jí)配置---〉Config?Execute?Queues中的配置項(xiàng)如下:
1、Queue?Length隊(duì)列長(zhǎng)度,執(zhí)行隊(duì)列的長(zhǎng)度
2、Queue?Length?Threshold?Percent?一個(gè)百分?jǐn)?shù),當(dāng)request的數(shù)量達(dá)到隊(duì)列長(zhǎng)度的這個(gè)比例的時(shí)候,weblogic會(huì)發(fā)出overflow的標(biāo)志信息。
3、Thread?Count?服務(wù)器初始創(chuàng)建的執(zhí)行線程的數(shù)量
4、Thread?Increase?如果weblogic發(fā)出overflow的標(biāo)志信息,weblogic會(huì)嘗試增加這個(gè)數(shù)量的執(zhí)行線程,以解決處理矛盾。
5、Threads?Maximum最大執(zhí)行線程數(shù)
6、Threads?Minimum最小執(zhí)行線程數(shù)
7、Thread?Priority線程優(yōu)先級(jí)
另外server菜單—〉configuration頁(yè)---〉tuning子頁(yè)中還有一些相關(guān)的配置:
1、??Stuck?Thread?Max?Time?黏聯(lián)線程時(shí)間,超過(guò)這個(gè)時(shí)間沒有返回的執(zhí)行線程,系統(tǒng)將認(rèn)為是黏聯(lián)線程。
2、??Stuck?Thread?Timer?Interval?系統(tǒng)檢查黏聯(lián)線程的時(shí)間間隔
如果weblogic認(rèn)為某個(gè)隊(duì)列中的所有的線程全部黏聯(lián)的話,weblogic將會(huì)增加執(zhí)行線程的數(shù)量。
注意:執(zhí)行線程的數(shù)量一旦增加,目前weblogic不會(huì)去減少他,如果增加了一些線程以后再次出現(xiàn)overflow的警告,weblogic會(huì)繼續(xù)增加執(zhí)行線程的數(shù)量,一直到達(dá)到上限為止。
(三)??套接字復(fù)用器的相關(guān)配置
Weblogic帶有兩個(gè)版本的套接字復(fù)用器,純java版和本地接口版(jni),一般來(lái)說(shuō)在訪問量小的情況下,java版比jni版性能要好一些,因?yàn)閖ni的API調(diào)用會(huì)損失一部分性能,但是訪問量大的情況,一般都是jni版的性能比較好,所以盡量保證weblogic實(shí)用本地接口版的套接字復(fù)用器。
相關(guān)的配置參數(shù)有兩個(gè),在server菜單—〉configuration頁(yè)---〉tuning子頁(yè)中的第一個(gè)和第二個(gè)配置項(xiàng)。
Enable?Native?IO?:?jiǎn)⒂帽镜豂O,勾選這個(gè)配置以后,weblogic就會(huì)啟用本地接口版的套接字復(fù)用器
Socket?Readers?:如果不選上一個(gè)選項(xiàng),則這個(gè)選項(xiàng)可用,也就是說(shuō)java版的套接字復(fù)用器會(huì)被啟用,并且,java版的復(fù)用器會(huì)從執(zhí)行線程中抽出這個(gè)比例的線程用于處理socket的請(qǐng)求。(和java客戶端訪問有關(guān)?)
web應(yīng)用程序的相關(guān)配置
1、單線程模式servlet
默認(rèn)情況下,一個(gè)servlet實(shí)例將會(huì)產(chǎn)生多個(gè)線程來(lái)同時(shí)響應(yīng)多個(gè)請(qǐng)求。
如果某個(gè)servlet實(shí)現(xiàn)SingleThreadMod旗標(biāo)接口,那么這個(gè)servlet將會(huì)自動(dòng)拒絕多路并行請(qǐng)求的模式。在這種情況下,weblogic會(huì)產(chǎn)生一個(gè)servlet實(shí)例池來(lái)滿足單線程的要求。
目前,應(yīng)該盡量避免使用單線程模式的servlet,如果需要在大容量的系統(tǒng)中使用單線程模式的servlet,那么應(yīng)該調(diào)整如下的參數(shù):
Single?Threaded?Servlet?Pool?Size?這個(gè)參數(shù)可在weblogic.xml或者在weblogic控制臺(tái)上webapplication菜單---〉configuration頁(yè)---〉Descriptor??子頁(yè)中進(jìn)行設(shè)置。
默認(rèn)為5。
2、Weblogic生產(chǎn)模式下會(huì)自動(dòng)監(jiān)測(cè)servlet和jsp的更改情況,在產(chǎn)品模式下,不需要這些檢查,可以通過(guò)下面的參數(shù)更改:
JSPPage?Check?Secs和Servlet?Reload?Check?Secs均設(shè)為-1這兩項(xiàng)是weblogic檢查jsp和servlet的時(shí)間間隔。設(shè)置為-1,weblogic將不再檢查。
關(guān)閉JSPKeep?Generated和JSPVerbose,產(chǎn)品模式下也不需要這兩個(gè)選項(xiàng)。
Enable?JSP?Line?Numbers?這個(gè)選項(xiàng)是啟用jsp行號(hào)的選項(xiàng),啟用行號(hào)的目的是用來(lái)支持調(diào)試,有些IDE可以在jsp生成的java源代碼中設(shè)置斷點(diǎn)用于調(diào)試。生產(chǎn)模式中也不需要。
注意:在產(chǎn)品發(fā)布模式下,請(qǐng)禁止對(duì)servlet和jsp的變更檢查,這樣除了能提高效率以外,還可以防止用上傳文件的方式對(duì)服務(wù)器的攻擊。如果需要更改servlet和jsp,可以重新部署應(yīng)用。
3、Session和cookie的相關(guān)配置
概念會(huì)話cookie:如果不設(shè)置過(guò)期時(shí)間,則表示這個(gè)cookie的生命期為瀏覽器會(huì)話期間,只要關(guān)閉瀏覽器窗口,cookie就消失了。這種生命期為瀏覽器會(huì)話期的?cookie被稱為會(huì)話cookie。
Session?Cookie?Max?Age?Secs?就是會(huì)話cookie的超時(shí)時(shí)間,設(shè)置小于0表示不限制。
Session?Invalidation?Interval?Secs?檢查過(guò)期session的周期
Session?Timeout?Secs?session的超時(shí)時(shí)間
4、Jdbc連接池的配置
URL?連接池地址
Driver?Classname?:jdbc驅(qū)動(dòng)類名
Properties?:屬性,例如user=examples
Password?:密碼
Initial?Capacity?:初始連接數(shù)
Maximum?Capacity?:最大連接數(shù)
Capacity?Increment?:連接池每次增加連接的數(shù)量
?
Statement?Cache?Type?:prepared?statements緩存的策略,LRU算法在有新的語(yǔ)句到來(lái)時(shí),將最不經(jīng)常被用得語(yǔ)句調(diào)整出緩存。FIXED算法為先進(jìn)先出的算法
Statement?Cache?Size?:緩存中語(yǔ)句的最大數(shù)量,調(diào)整這個(gè)數(shù)值的大小,有利于提高系統(tǒng)的效率。?
java虛擬機(jī)配置
JRockit是BEA公司開發(fā)的Intel平臺(tái)之上的高性能以及高可管理性的jvm產(chǎn)品,在Intel平臺(tái)上使用JRockit無(wú)疑會(huì)大大的提高效率。使用向?qū)Ыerver的配置的時(shí)候,可以選擇JRockit作為該server的虛擬機(jī),另外,也可以在域的startWebLogic.cmd或者startWebLogic.sh腳本中配置使用JRockit。
?
使用JRockit:
set?JAVA_VENDOR=BEA
set?JAVA_HOME=c:\bea\jrockit81sp4_142_05
使用Sun的jvm:
set?JAVA_VENDOR=Sun
set?JAVA_HOME=c:\bea\jdk142_05
?
u???????與java虛擬機(jī)相關(guān)的參數(shù)配置可在startWebLogic.cmd或者startWebLogic.sh腳本中設(shè)置,在其執(zhí)行java命令之前一行加入如下指令:
set?JAVA_VM=%JAVA_VM%?“這里加入虛擬機(jī)參數(shù)”
JRockit上的一些參數(shù)解釋如下:
選項(xiàng)
????
描述
-X
????
顯示擴(kuò)展Java選項(xiàng)
-Xallotype
-Xallocationtype
????
可取值global和local,定義使用本地線程還是全局線程。
global,在最大堆尺寸比較小時(shí)(小于128M)或者應(yīng)用程序大量使用了線程時(shí)使用。
local,在最大堆尺寸比較大時(shí)(大于128M)或者應(yīng)用程序少量使用了線程時(shí)使用。
每個(gè)本地線程區(qū)都要消耗大約2K的內(nèi)存,如果大量地使用了線程,本地線程不但會(huì)造成內(nèi)存空間浪費(fèi),而且還會(huì)造成堆碎片。使用全局線程機(jī)制會(huì)減少堆碎片,但在內(nèi)存分配方面速度要慢一些。
-Xbootclasspath
????
指定類搜索路徑,可以是ZIP和JAR文件,以;或:分隔
-Xcleartype
????
定義內(nèi)存清理時(shí)機(jī),可取值gc,?local,?alloc。gc表示在垃圾回收時(shí)清理內(nèi)存;local表示時(shí)分配一塊local線程區(qū)時(shí)清理;alloc表示內(nèi)存區(qū)要被分配給其它對(duì)象時(shí)清理
-Xgc
????
選擇要使用的垃圾回收器的類型,可取值:
gencopy:分代復(fù)制收集(默認(rèn))適合調(diào)試期間使用
singlecon:?jiǎn)慰臻g并發(fā),無(wú)中斷并發(fā)
gencon:世代并發(fā),暫停時(shí)間最短
parallel:parallel并行回收器,會(huì)導(dǎo)致應(yīng)用程序間歇暫停,但會(huì)帶來(lái)最大吞吐量。
如果-Xmx小于128M,缺省使用gencopy,否則使用gencon
-Xgcpause
????
打印由垃圾回收器造成的停頓時(shí)間
-Xgcreport
????
打印垃圾回收?qǐng)?bào)表
-Xjvmpi
????
是否允許JVMPI事件,這些事件有:
entryexit(缺省ON)
allocs(缺省ON)
monitors(缺省ON)
arenasdelete(缺省OFF)
例如:-Xjvmpi:allocs=off,monitors=off,entryexit=off
-Xmanagement
????
激活JVM中的管理服務(wù)器,在JVM的管理控制臺(tái)能連接到它之前,必須先激活。
-Xms
????
設(shè)置初始堆大小,單位有K、M、G
-Xmx
????
設(shè)置最大堆大小,單位有K、M、G
建議:應(yīng)設(shè)置-Xms=-Xmx以免去分配堆的時(shí)間
-Xnativethreads
????
使用本地線程系統(tǒng),這是缺省選項(xiàng)
-Xnoclassgc
????
禁止對(duì)類作垃圾回收
-Xnohup
????
告訴JRockit,忽略CTRL_LOGOFF_EVENT和SIGHUP事件
-Xns
????
設(shè)置nursery尺寸,單位有K、M、G
Nursery是垃圾回收器用來(lái)存放臨時(shí)對(duì)象的地方,應(yīng)該在保證垃圾回收暫停時(shí)間最短的情況下,盡量大的調(diào)整nursery的值。
對(duì)于-Xgc:gencopy,缺省的Nursery大小為320KB/CPU,對(duì)于10個(gè)CPU的系統(tǒng)來(lái)說(shuō),Nursery大小為3200KB(3.2M)對(duì)于-Xgc:gencon,缺省的Nursery大小為10M/CPU,對(duì)于10個(gè)CPU的系統(tǒng)來(lái)說(shuō),Nursery大小為100M
-Xss
????
設(shè)置線程棧尺寸,單位有K、M、G
-Xthinthreads
????
使用JRockit的高性能線程系統(tǒng),在IA64上不可用。
注意:瘦線程系統(tǒng)目前還沒有全面推廣,不建議使用
-Xverbose
????
讓JRockit打印更多的信息,可選的參數(shù)有:
codegen、cpuinfo、gc、load、memory、Opt
-Xverify
????
作完整的bytecode一級(jí)的校驗(yàn)
?
u???????JRockit的管理控制臺(tái)的使用
在JRockit的啟動(dòng)參數(shù)中加入-Xmanagement,以便啟動(dòng)JRockit的時(shí)候同時(shí)啟動(dòng)其Management?Server。
在JRockit的bin目錄下,運(yùn)行console.exe程序
建立一個(gè)新的連接,連接需要監(jiān)視的JRockit(監(jiān)視端口默認(rèn)為7090)
在JRockit?Management?Console中,將Tools/Preferences菜單中的Mode?of?operation屬性設(shè)為developer
在Method?Profiler屬性頁(yè)中添加你所需要觀察的類的成員方法
按Start按鈕讓Method?Profiler開始進(jìn)行統(tǒng)計(jì)
原文地址:http://www.aygfsteel.com/lqsun

(一)??原理簡(jiǎn)單說(shuō)明
服務(wù)器啟動(dòng),就會(huì)綁定到相應(yīng)的端口,并為一個(gè)端口分配一個(gè)線程以接受連接請(qǐng)求,一旦服務(wù)器接受到連接請(qǐng)求并建立好連接以后,監(jiān)聽線程將處理權(quán)交給套接字復(fù)用器,套接字復(fù)用器進(jìn)行一定的處理,并會(huì)負(fù)責(zé)選擇利用那個(gè)執(zhí)行隊(duì)列并將請(qǐng)求置入其中。當(dāng)有一個(gè)請(qǐng)求進(jìn)入執(zhí)行隊(duì)列,就會(huì)有一個(gè)空閑的執(zhí)行縣城從該隊(duì)列里面取走并向調(diào)用者返回結(jié)果。
(二)??執(zhí)行隊(duì)列和執(zhí)行線程的相關(guān)配置
執(zhí)行線程數(shù)量有一定的限制,在服務(wù)器啟動(dòng)的時(shí)候,就已經(jīng)形成了一個(gè)含有一定數(shù)量執(zhí)行線程的池,執(zhí)行線程可能跨servlet,ejb和jdbc等,由于執(zhí)行線程僅當(dāng)程序成功結(jié)束或者出現(xiàn)異常才能被釋放繼續(xù)處理其他請(qǐng)求,所以如果執(zhí)行線程執(zhí)行的不夠快,而請(qǐng)求又多的情況下,就會(huì)造成執(zhí)行隊(duì)列的阻塞。
相關(guān)的配置信息有:
server菜單—〉configuration頁(yè)---〉高級(jí)配置---〉Config?Execute?Queues中的配置項(xiàng)如下:
1、Queue?Length隊(duì)列長(zhǎng)度,執(zhí)行隊(duì)列的長(zhǎng)度
2、Queue?Length?Threshold?Percent?一個(gè)百分?jǐn)?shù),當(dāng)request的數(shù)量達(dá)到隊(duì)列長(zhǎng)度的這個(gè)比例的時(shí)候,weblogic會(huì)發(fā)出overflow的標(biāo)志信息。
3、Thread?Count?服務(wù)器初始創(chuàng)建的執(zhí)行線程的數(shù)量
4、Thread?Increase?如果weblogic發(fā)出overflow的標(biāo)志信息,weblogic會(huì)嘗試增加這個(gè)數(shù)量的執(zhí)行線程,以解決處理矛盾。
5、Threads?Maximum最大執(zhí)行線程數(shù)
6、Threads?Minimum最小執(zhí)行線程數(shù)
7、Thread?Priority線程優(yōu)先級(jí)
另外server菜單—〉configuration頁(yè)---〉tuning子頁(yè)中還有一些相關(guān)的配置:
1、??Stuck?Thread?Max?Time?黏聯(lián)線程時(shí)間,超過(guò)這個(gè)時(shí)間沒有返回的執(zhí)行線程,系統(tǒng)將認(rèn)為是黏聯(lián)線程。
2、??Stuck?Thread?Timer?Interval?系統(tǒng)檢查黏聯(lián)線程的時(shí)間間隔
如果weblogic認(rèn)為某個(gè)隊(duì)列中的所有的線程全部黏聯(lián)的話,weblogic將會(huì)增加執(zhí)行線程的數(shù)量。
注意:執(zhí)行線程的數(shù)量一旦增加,目前weblogic不會(huì)去減少他,如果增加了一些線程以后再次出現(xiàn)overflow的警告,weblogic會(huì)繼續(xù)增加執(zhí)行線程的數(shù)量,一直到達(dá)到上限為止。
(三)??套接字復(fù)用器的相關(guān)配置
Weblogic帶有兩個(gè)版本的套接字復(fù)用器,純java版和本地接口版(jni),一般來(lái)說(shuō)在訪問量小的情況下,java版比jni版性能要好一些,因?yàn)閖ni的API調(diào)用會(huì)損失一部分性能,但是訪問量大的情況,一般都是jni版的性能比較好,所以盡量保證weblogic實(shí)用本地接口版的套接字復(fù)用器。
相關(guān)的配置參數(shù)有兩個(gè),在server菜單—〉configuration頁(yè)---〉tuning子頁(yè)中的第一個(gè)和第二個(gè)配置項(xiàng)。
Enable?Native?IO?:?jiǎn)⒂帽镜豂O,勾選這個(gè)配置以后,weblogic就會(huì)啟用本地接口版的套接字復(fù)用器
Socket?Readers?:如果不選上一個(gè)選項(xiàng),則這個(gè)選項(xiàng)可用,也就是說(shuō)java版的套接字復(fù)用器會(huì)被啟用,并且,java版的復(fù)用器會(huì)從執(zhí)行線程中抽出這個(gè)比例的線程用于處理socket的請(qǐng)求。(和java客戶端訪問有關(guān)?)
web應(yīng)用程序的相關(guān)配置
1、單線程模式servlet
默認(rèn)情況下,一個(gè)servlet實(shí)例將會(huì)產(chǎn)生多個(gè)線程來(lái)同時(shí)響應(yīng)多個(gè)請(qǐng)求。
如果某個(gè)servlet實(shí)現(xiàn)SingleThreadMod旗標(biāo)接口,那么這個(gè)servlet將會(huì)自動(dòng)拒絕多路并行請(qǐng)求的模式。在這種情況下,weblogic會(huì)產(chǎn)生一個(gè)servlet實(shí)例池來(lái)滿足單線程的要求。
目前,應(yīng)該盡量避免使用單線程模式的servlet,如果需要在大容量的系統(tǒng)中使用單線程模式的servlet,那么應(yīng)該調(diào)整如下的參數(shù):
Single?Threaded?Servlet?Pool?Size?這個(gè)參數(shù)可在weblogic.xml或者在weblogic控制臺(tái)上webapplication菜單---〉configuration頁(yè)---〉Descriptor??子頁(yè)中進(jìn)行設(shè)置。
默認(rèn)為5。
2、Weblogic生產(chǎn)模式下會(huì)自動(dòng)監(jiān)測(cè)servlet和jsp的更改情況,在產(chǎn)品模式下,不需要這些檢查,可以通過(guò)下面的參數(shù)更改:
JSPPage?Check?Secs和Servlet?Reload?Check?Secs均設(shè)為-1這兩項(xiàng)是weblogic檢查jsp和servlet的時(shí)間間隔。設(shè)置為-1,weblogic將不再檢查。
關(guān)閉JSPKeep?Generated和JSPVerbose,產(chǎn)品模式下也不需要這兩個(gè)選項(xiàng)。
Enable?JSP?Line?Numbers?這個(gè)選項(xiàng)是啟用jsp行號(hào)的選項(xiàng),啟用行號(hào)的目的是用來(lái)支持調(diào)試,有些IDE可以在jsp生成的java源代碼中設(shè)置斷點(diǎn)用于調(diào)試。生產(chǎn)模式中也不需要。
注意:在產(chǎn)品發(fā)布模式下,請(qǐng)禁止對(duì)servlet和jsp的變更檢查,這樣除了能提高效率以外,還可以防止用上傳文件的方式對(duì)服務(wù)器的攻擊。如果需要更改servlet和jsp,可以重新部署應(yīng)用。
3、Session和cookie的相關(guān)配置
概念會(huì)話cookie:如果不設(shè)置過(guò)期時(shí)間,則表示這個(gè)cookie的生命期為瀏覽器會(huì)話期間,只要關(guān)閉瀏覽器窗口,cookie就消失了。這種生命期為瀏覽器會(huì)話期的?cookie被稱為會(huì)話cookie。
Session?Cookie?Max?Age?Secs?就是會(huì)話cookie的超時(shí)時(shí)間,設(shè)置小于0表示不限制。
Session?Invalidation?Interval?Secs?檢查過(guò)期session的周期
Session?Timeout?Secs?session的超時(shí)時(shí)間
4、Jdbc連接池的配置
URL?連接池地址
Driver?Classname?:jdbc驅(qū)動(dòng)類名
Properties?:屬性,例如user=examples
Password?:密碼
Initial?Capacity?:初始連接數(shù)
Maximum?Capacity?:最大連接數(shù)
Capacity?Increment?:連接池每次增加連接的數(shù)量
?
Statement?Cache?Type?:prepared?statements緩存的策略,LRU算法在有新的語(yǔ)句到來(lái)時(shí),將最不經(jīng)常被用得語(yǔ)句調(diào)整出緩存。FIXED算法為先進(jìn)先出的算法
Statement?Cache?Size?:緩存中語(yǔ)句的最大數(shù)量,調(diào)整這個(gè)數(shù)值的大小,有利于提高系統(tǒng)的效率。?
java虛擬機(jī)配置
JRockit是BEA公司開發(fā)的Intel平臺(tái)之上的高性能以及高可管理性的jvm產(chǎn)品,在Intel平臺(tái)上使用JRockit無(wú)疑會(huì)大大的提高效率。使用向?qū)Ыerver的配置的時(shí)候,可以選擇JRockit作為該server的虛擬機(jī),另外,也可以在域的startWebLogic.cmd或者startWebLogic.sh腳本中配置使用JRockit。
?
使用JRockit:
set?JAVA_VENDOR=BEA
set?JAVA_HOME=c:\bea\jrockit81sp4_142_05
使用Sun的jvm:
set?JAVA_VENDOR=Sun
set?JAVA_HOME=c:\bea\jdk142_05
?
u???????與java虛擬機(jī)相關(guān)的參數(shù)配置可在startWebLogic.cmd或者startWebLogic.sh腳本中設(shè)置,在其執(zhí)行java命令之前一行加入如下指令:
set?JAVA_VM=%JAVA_VM%?“這里加入虛擬機(jī)參數(shù)”
JRockit上的一些參數(shù)解釋如下:
選項(xiàng)
????
描述
-X
????
顯示擴(kuò)展Java選項(xiàng)
-Xallotype
-Xallocationtype
????
可取值global和local,定義使用本地線程還是全局線程。
global,在最大堆尺寸比較小時(shí)(小于128M)或者應(yīng)用程序大量使用了線程時(shí)使用。
local,在最大堆尺寸比較大時(shí)(大于128M)或者應(yīng)用程序少量使用了線程時(shí)使用。
每個(gè)本地線程區(qū)都要消耗大約2K的內(nèi)存,如果大量地使用了線程,本地線程不但會(huì)造成內(nèi)存空間浪費(fèi),而且還會(huì)造成堆碎片。使用全局線程機(jī)制會(huì)減少堆碎片,但在內(nèi)存分配方面速度要慢一些。
-Xbootclasspath
????
指定類搜索路徑,可以是ZIP和JAR文件,以;或:分隔
-Xcleartype
????
定義內(nèi)存清理時(shí)機(jī),可取值gc,?local,?alloc。gc表示在垃圾回收時(shí)清理內(nèi)存;local表示時(shí)分配一塊local線程區(qū)時(shí)清理;alloc表示內(nèi)存區(qū)要被分配給其它對(duì)象時(shí)清理
-Xgc
????
選擇要使用的垃圾回收器的類型,可取值:
gencopy:分代復(fù)制收集(默認(rèn))適合調(diào)試期間使用
singlecon:?jiǎn)慰臻g并發(fā),無(wú)中斷并發(fā)
gencon:世代并發(fā),暫停時(shí)間最短
parallel:parallel并行回收器,會(huì)導(dǎo)致應(yīng)用程序間歇暫停,但會(huì)帶來(lái)最大吞吐量。
如果-Xmx小于128M,缺省使用gencopy,否則使用gencon
-Xgcpause
????
打印由垃圾回收器造成的停頓時(shí)間
-Xgcreport
????
打印垃圾回收?qǐng)?bào)表
-Xjvmpi
????
是否允許JVMPI事件,這些事件有:
entryexit(缺省ON)
allocs(缺省ON)
monitors(缺省ON)
arenasdelete(缺省OFF)
例如:-Xjvmpi:allocs=off,monitors=off,entryexit=off
-Xmanagement
????
激活JVM中的管理服務(wù)器,在JVM的管理控制臺(tái)能連接到它之前,必須先激活。
-Xms
????
設(shè)置初始堆大小,單位有K、M、G
-Xmx
????
設(shè)置最大堆大小,單位有K、M、G
建議:應(yīng)設(shè)置-Xms=-Xmx以免去分配堆的時(shí)間
-Xnativethreads
????
使用本地線程系統(tǒng),這是缺省選項(xiàng)
-Xnoclassgc
????
禁止對(duì)類作垃圾回收
-Xnohup
????
告訴JRockit,忽略CTRL_LOGOFF_EVENT和SIGHUP事件
-Xns
????
設(shè)置nursery尺寸,單位有K、M、G
Nursery是垃圾回收器用來(lái)存放臨時(shí)對(duì)象的地方,應(yīng)該在保證垃圾回收暫停時(shí)間最短的情況下,盡量大的調(diào)整nursery的值。
對(duì)于-Xgc:gencopy,缺省的Nursery大小為320KB/CPU,對(duì)于10個(gè)CPU的系統(tǒng)來(lái)說(shuō),Nursery大小為3200KB(3.2M)對(duì)于-Xgc:gencon,缺省的Nursery大小為10M/CPU,對(duì)于10個(gè)CPU的系統(tǒng)來(lái)說(shuō),Nursery大小為100M
-Xss
????
設(shè)置線程棧尺寸,單位有K、M、G
-Xthinthreads
????
使用JRockit的高性能線程系統(tǒng),在IA64上不可用。
注意:瘦線程系統(tǒng)目前還沒有全面推廣,不建議使用
-Xverbose
????
讓JRockit打印更多的信息,可選的參數(shù)有:
codegen、cpuinfo、gc、load、memory、Opt
-Xverify
????
作完整的bytecode一級(jí)的校驗(yàn)
?
u???????JRockit的管理控制臺(tái)的使用
在JRockit的啟動(dòng)參數(shù)中加入-Xmanagement,以便啟動(dòng)JRockit的時(shí)候同時(shí)啟動(dòng)其Management?Server。
在JRockit的bin目錄下,運(yùn)行console.exe程序
建立一個(gè)新的連接,連接需要監(jiān)視的JRockit(監(jiān)視端口默認(rèn)為7090)
在JRockit?Management?Console中,將Tools/Preferences菜單中的Mode?of?operation屬性設(shè)為developer
在Method?Profiler屬性頁(yè)中添加你所需要觀察的類的成員方法
按Start按鈕讓Method?Profiler開始進(jìn)行統(tǒng)計(jì)
原文地址:http://www.aygfsteel.com/lqsun