您的位置:首页 > 编程语言 > Java开发

Java虚拟机工具之虚拟机进程状况工具jps

2016-11-02 10:31 197 查看
jps(JVM Process Status Tool),有点像linux的ps命令,通过这个命令你可以查看执行类的名称以及这些进程在本地虚拟机中对应的唯一ID(Local Virtual Machine Identifier, LVMID)。

对于本地虚拟机来讲,LVMID与PID是一致的。

该工具很简单,但是使用很频繁,这个工具在很多时候是使用其他工具的前提,废话少说,直接看示例:

kevin@kevin-HP-Compaq-Pro-4300-AiO-20-PC-APJ-CTO:~$ jps
7369 Launcher
21773 Jps
2815 Main


在啥参数也没有的情况下,第一列显示的就是LVMID,第二列显示的就是运行类的名称,在你啥也没运行的时候,只显示Jps与其对应的id。

其实大部分情况下 ,上面的就足以应付大部分应用场景,当然jps也不只是就这么简单,准确地讲,jps的命令格式是这样的:

jps [ options ] [ hostid ]


首先看一下option部分

-q参数的意思就是除了显示一下id,其他的就不显示了。

kevin@kevin-HP-Compaq-Pro-4300-AiO-20-PC-APJ-CTO:~$ jps -q
7369
21789
2815


-m 参数则是显示主方法的输入参数,对于嵌入的JVM,输出可能是null。

kevin@kevin-HP-Compaq-Pro-4300-AiO-20-PC-APJ-CTO:~$ jps -m
7369 Launcher /usr/idea-IU/lib/jps-builders.jar:/usr/idea-IU/lib/picocontainer.jar:/usr/idea-IU/lib/netty-all-4.1.0.Beta8.jar:/usr/idea-IU/lib/rt/jps-plugin-system.jar:/usr/idea-IU/lib/jna.jar:/usr/idea-IU/lib/jps-model.jar:/usr/idea-IU/lib/annotations.jar:/usr/idea-IU/lib/log4j.jar:/usr/idea-IU/lib/jsr166e.jar:/usr/idea-IU/lib/protobuf-2.5.0.jar:/usr/idea-IU/lib/asm-all.jar:/usr/idea-IU/lib/javac2.jar:/usr/idea-IU/lib/oromatcher.jar:/usr/idea-IU/lib/util.jar:/usr/idea-IU/lib/trove4j.jar:/usr/idea-IU/lib/snappy-in-java-0.3.1.jar:/usr/idea-IU/lib/nanoxml-2.2.3.jar:/usr/idea-IU/lib/idea_rt.jar:/usr/idea-IU/lib/jna-platform.jar:/usr/idea-IU/lib/openapi.jar:/usr/idea-IU/lib/jgoodies-forms.jar:/usr/idea-IU/lib/jdom.jar:/usr/idea-IU/lib/resources_en.jar::/usr/idea-IU/plugins/gradle/lib/guava-jdk5-17.0.jar:/usr/idea-IU/plugins/gradle/lib/gradle-jps-plugin.jar:/usr/idea-IU/plugins/gradle/lib/gradle-wrapper-2.5.jar:/usr/idea-IU/plugins/gradle/lib/reflectasm-1.07.jar:/usr/idea-IU/plugins/gradle/lib
21804 Jps -m
2815 Main


看到没,我们输入命令带有-m参数,输入结果显示出了-m。

-l 则是显示主方法完整的包名

kevin@kevin-HP-Compaq-Pro-4300-AiO-20-PC-APJ-CTO:~$ jps -l
21832 sun.tools.jps.Jps
7369 org.jetbrains.jps.cmdline.Launcher
2815 com.intellij.idea.Main


-v 显示传给JVM的参数

kevin@kevin-HP-Compaq-Pro-4300-AiO-20-PC-APJ-CTO:~$ jps -v
21848 Jps -Denv.class.path=.:/usr/java/jdk1.8.0_101/lib/dt.jar:/usr/java/jdk1.8.0_101/lib/tools.jar -Dapplication.home=/usr/java/jdk1.8.0_101 -Xms8m
7369 Launcher -Xmx700m -Djava.awt.headless=true -Djava.endorsed.dirs="" -Djdt.compiler.useSingleThread=true -Dpreload.project.path=/home/kevin/IdeaProjects/DynamicProxyDemo -Dpreload.config.path=/home/kevin/.IntelliJIdea15/config/options -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Djava.net.preferIPv4Stack=true -Dio.netty.initialSeedUniquifier=388561894858164884 -Dfile.encoding=UTF-8 -Djps.file.types.component.name=FileTypeManager -Duser.language=en -Duser.country=US -Didea.paths.selector=IntelliJIdea15 -Didea.home.path=/usr/idea-IU -Didea.config.path=/home/kevin/.IntelliJIdea15/config -Didea.plugins.path=/home/kevin/.IntelliJIdea15/config/plugins -Djps.log.dir=/home/kevin/.IntelliJIdea15/system/log/build-log -Djava.io.tmpdir=/home/kevin/.IntelliJIdea15/system/compile-server/_temp_ -Dkotlin.daemon.enabled -Dkotlin.daemon.client.alive.path="/home/kevin/.IntelliJIdea15/system/tmp/kotlin-idea-758921108511928428-is-running"
2815 Main -Xbootclasspath/a:./../lib/boot.jar -Xms128m -Xmx750m -XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Dawt.useSystemAAFontSettings=lcd -Djb.vmOptionsFile=./idea64.vmoptions -XX:ErrorFile=/home/kevin/java_error_in_IDEA_%p.log -Djb.restart.code=88 -Didea.paths.selector=IntelliJIdea15


-V感觉效果与-q差不多,也是只显示local JVM identifiers,其他的比如传给主方法的参数啦,类名啦,JAR包名啦就不显示了。

kevin@kevin-HP-Compaq-Pro-4300-AiO-20-PC-APJ-CTO:~$ jps -V
21863 Jps
7369 Launcher
2815 Main


还有一个参数,是传给JVM的选项,比如

kevin@kevin-HP-Compaq-Pro-4300-AiO-20-PC-APJ-CTO:~$ jps -J-Xms48m


这个命令的意思就是设置启动内存大小为48MB。

本文主要介绍这几个参数的用法以及使用效果,关于[hostid](HOST IDENTIFIER)在以后的文章中再介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jvm