java - jps

来源:趣味经验馆 1.78W

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java jps是什么,让我们一起了解一下?

jps是用于查看有权访问的hotspot虚拟机的进程,当未指定hostid时,默认查看本机jvm进程,否者查看指定的hostid机器上的jvm进程,此时hostid所指机器必须开启jstatd服务。jps可以列出jvm进程lvmid,主类类名,main函数参数, jvm参数,jar名称等信息。

命令格式:jps [options ] [ hostid ] [options]选项 :-q:仅输出VM标识符,不包括classname,jar name,arguments in main method -m:输出main method的参数 -l:输出完全的包名,应用主类名,jar的完全路径名 -v:输出jvm参数 -V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件 -Joption:传递参数到vm,例如:-J-Xms512m [hostid]:[protocol:][[//]hostname][:port][/servername]

命令的输出格式 :

lvmid [ [ classname| JARfilename | "Unknown"] [ arg* ] [ jvmarg* ] ]

java jps

那么jps是如何实现的?

我们从入口类Jps.java看起,这个类中就一个Main方法,核心的代码如下图所示,首先从特定的主机上获取正在运行的Java进程,然后对这些进程进行输出,如果有参数的话还要额外输出参数需要输出的信息。从主机获取Java进程主要有分为两种,一种是本地的,另一种通过RMI远程调用的。

HostIdentifier hostId = arguments.hostId();            MonitoredHost monitoredHost =                    MonitoredHost.getMonitoredHost(hostId);            // 从特定主机上获取Java进程            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 = "//" + lvmid + "?mode=r";                String errorString = null;                // 处理其他参数            }

热门标签