高愛(ài)玲
摘 要:近年來(lái),Java得到迅猛發(fā)展,它不僅結(jié)構(gòu)嚴(yán)謹(jǐn)面向?qū)ο蠖疫€有許多不可替代的優(yōu)點(diǎn):不受硬件的束縛;內(nèi)存管理和訪問(wèn)機(jī)制更安全;內(nèi)存泄露和指針越界問(wèn)題大為減少。隨著運(yùn)行時(shí)間的增加就使得Java獲得了更高的性能,本文針對(duì)這個(gè)問(wèn)題簡(jiǎn)單介紹幾個(gè)容易忽視的JAVA小命令,希望能給各位頂點(diǎn)幫助。
關(guān)鍵詞:Java;命令;sun
作為Java的使用者,我們都知道每逢JDK更新版本之時(shí),bin目錄下命令行工具的數(shù)量和功能總會(huì)不知不覺(jué)地增加和增強(qiáng)。在本文中,筆者將介紹這些工具的其中一部分,主要包括用于監(jiān)視虛擬機(jī)和故障處理的工具。這些故障處理工具被Sun公司作為“禮物”附贈(zèng)給JDK的使用者,雖然是贈(zèng)送,但事實(shí)上這些工具都非常穩(wěn)定而且功能強(qiáng)大,能在處理應(yīng)用程序性能問(wèn)題、定位故障時(shí)發(fā)揮很大的作用。
說(shuō)起JDK的工具,用過(guò)的程序員可能會(huì)注意到這些工具的程序體積都異常小巧,幾乎所有工具的體積基本上都穩(wěn)定在27KB左右。假如您使用的是Linux版本的JDK,還會(huì)發(fā)現(xiàn)這些工具中很多甚至就是由Shell腳本直接寫成的,可以用vim直接打開它們。JDK開發(fā)團(tuán)隊(duì)選擇采用Java代碼來(lái)實(shí)現(xiàn)這些監(jiān)控工具是有特別用意的:當(dāng)應(yīng)用程序部署到生產(chǎn)環(huán)境后,無(wú)論是直接接觸物理服務(wù)器還是遠(yuǎn)程Telnet到服務(wù)器上都可能會(huì)受到限制。
1 第一個(gè)小工具jps:查詢虛擬機(jī)進(jìn)程
JDK的很多小工具的名字像UNIX的命令,它的功能也和UNIX命令很相似:把正在運(yùn)行的虛擬機(jī)進(jìn)程給我們列舉出來(lái),并把Main Class,main()的功能顯示出來(lái)。這個(gè)小工具功能比較單一,但是它的出現(xiàn)頻率還是非常高的。在使用Windows的任務(wù)管理器也可以查詢進(jìn)程的LVMID,多個(gè)虛擬機(jī)進(jìn)程如果一個(gè) 時(shí)間段內(nèi)啟動(dòng)了,很難對(duì)進(jìn)程名稱定位時(shí),就非用jps命令不可了。
這個(gè)結(jié)果說(shuō)明的信息就是:Eden區(qū)(E,表示Eden)使用了6.2%的空間,兩個(gè)Survivor區(qū)里面沒(méi)有內(nèi)容,另外兩個(gè)區(qū)則分別使用了41.42%和47.20%的空間。程序運(yùn)行以來(lái)共發(fā)生MinorGC(YGC,表示Young GC)16次,總耗時(shí)0.105秒,發(fā)生Full GC(FGC,表示Full GC)3次,F(xiàn)ull GC總耗時(shí)(FGCT,表示Full GC Time)為0.472秒,所有GC總耗時(shí)(GCT,表示GC Time)為0.577秒。使用jstat工具在純文本狀態(tài)下監(jiān)視虛擬機(jī)狀態(tài)的變化,確實(shí)不如后面將會(huì)提到的VisualVM等可視化的監(jiān)視工具直接以圖表展現(xiàn)那樣直觀。但許多服務(wù)器管理員都習(xí)慣了在文本控制臺(tái)中工作,直接在控制臺(tái)中使用jstat命令依然是一種常用的監(jiān)控方式。
3 第三個(gè)小工具jinfo:Java用來(lái)進(jìn)行信息設(shè)置
[參考文獻(xiàn)]
[1]周志明.《深入理解JAVA虛擬機(jī)》.
[2]汪靜.《JAVA學(xué)習(xí)指南》.