java jps是什么,讓我們一起了解一下?
jps是用于查看有權(quán)訪問的hotspot虛擬機(jī)的進(jìn)程,當(dāng)未指定hostid時(shí),默認(rèn)查看本機(jī)jvm進(jìn)程,否者查看指定的hostid機(jī)器上的jvm進(jìn)程,此時(shí)hostid所指機(jī)器必須開啟jstatd服務(wù)。jps可以列出jvm進(jìn)程lvmid,主類類名,main函數(shù)參數(shù), jvm參數(shù),jar名稱等信息。
命令格式:jps?[options?]?[?hostid?]? [options]選項(xiàng)?: -q:僅輸出VM標(biāo)識(shí)符,不包括classname,jar?name,arguments?in?main?method? -m:輸出main?method的參數(shù)? -l:輸出完全的包名,應(yīng)用主類名,jar的完全路徑名? -v:輸出jvm參數(shù)? -V:輸出通過flag文件傳遞到JVM中的參數(shù)(.hotspotrc文件或-XX:Flags=所指定的文件? -Joption:傳遞參數(shù)到vm,例如:-J-Xms512m ?[hostid]: [protocol:][[//]hostname][:port][/servername]
命令的輸出格式 :
lvmid?[?[?classname|?JARfilename?|?"Unknown"]?[?arg*?]?[?jvmarg*?]?]
那么jps是如何實(shí)現(xiàn)的?
我們從入口類Jps.java看起,這個(gè)類中就一個(gè)Main方法,核心的代碼如下圖所示,首先從特定的主機(jī)上獲取正在運(yùn)行的Java進(jìn)程,然后對(duì)這些進(jìn)程進(jìn)行輸出,如果有參數(shù)的話還要額外輸出參數(shù)需要輸出的信息。從主機(jī)獲取Java進(jìn)程主要有分為兩種,一種是本地的,另一種通過RMI遠(yuǎn)程調(diào)用的。
HostIdentifier?hostId?=?arguments.hostId(); ????????????MonitoredHost?monitoredHost?= ????????????????????MonitoredHost.getMonitoredHost(hostId); ????????????//?從特定主機(jī)上獲取Java進(jìn)程 ????????????Set?jvms?=?monitoredHost.activeVms(); ????????????for?(Iterator?j?=?jvms.iterator();?j.hasNext();?/*?empty?*/?)?{ ????????????????StringBuilder?output?=?new?StringBuilder(); ????????????????Throwable?lastError?=?null; ????????????????int?lvmid?=?((Integer)j.next()).intValue(); ????????????????output.append(String.valueOf(lvmid)); ????????????????if?(arguments.isQuiet())?{ ????????????????????System.out.println(output); ????????????????????continue; ????????????????} ????????????????MonitoredVm?vm?=?null; ????????????????String?vmidString?=?"http://"?+?lvmid?+?"?mode=r"; ????????????????String?errorString?=?null; ????????????????//?處理其他參數(shù) ????????????}
以上就是小編今天的分享了,希望可以幫助到大家。