虽然我是在jdk10环境下, 但是大体上和jdk8是差不多的. 总共有这么多

JDK常用命令行工具(基于JDK10)-LMLPHP

本来想着一口气把所有命令都边学边总结一下的, 结果发现....有些还真的不是很常用....或者说我这个水平还接触不到那么多.  于是我就把我能使用到的几个常用的总结一下了.  当做是笔记了.

jshell

jshell启动

JDK常用命令行工具(基于JDK10)-LMLPHP

jshell退出

JDK常用命令行工具(基于JDK10)-LMLPHP

jshell使用

就想python一样, 可以每一行代码都返回一个交互结果. 编写短小的程序来运行的时候, 就不用新建项目, 然后新建一个类了...可以直接上核心代码了.

JDK常用命令行工具(基于JDK10)-LMLPHP

JDK常用命令行工具(基于JDK10)-LMLPHP

JDK常用命令行工具(基于JDK10)-LMLPHP

还以为我从此以后不再需要计算器了

java的jshell计算大数的时候如下:(果然不出所料...失望..)

JDK常用命令行工具(基于JDK10)-LMLPHP

怎么解决呢? 肯定是因为默认数字都是Integer型. 只好手动调用BigInteger了.

JDK常用命令行工具(基于JDK10)-LMLPHP

jcmd

jcmd -h  输出jcmd的帮助信息.

JDK常用命令行工具(基于JDK10)-LMLPHP

jcmd -l   打印出所有jvm进程信息.

JDK常用命令行工具(基于JDK10)-LMLPHP

红色圈出来的数字是pid, 也就是进程id

jcmd <pid> PerfCounter.print  性能统计信息

JDK常用命令行工具(基于JDK10)-LMLPHP

JDK常用命令行工具(基于JDK10)-LMLPHP

jcmd <pid> help    列出可执行的进程操作

JDK常用命令行工具(基于JDK10)-LMLPHP

JDK常用命令行工具(基于JDK10)-LMLPHP

jcmd <pid> VM.version   看JVM版本信息

从上面一小节的截图中咱们挑一个执行一下. 比如 倒数第二行的VM.version

JDK常用命令行工具(基于JDK10)-LMLPHP

这样就利用了VM.version操作打印出了JDK虚拟机的版本.

jcmd <pid> GC.class_histogram  查看系统中类统计信息

(和这个命令是一个效果 jmap -histo <pid>  )

JDK常用命令行工具(基于JDK10)-LMLPHP

jcmd <pid> VM.uptime    查看 JVM 的启动时长

JDK常用命令行工具(基于JDK10)-LMLPHP

jcmd <pid> Thread.print   查看线程堆栈信息

(等同于这个命令:   jstack <pid> )

JDK常用命令行工具(基于JDK10)-LMLPHP

jcmd <pid> GC.run   对JVM执行System.gc()

JDK常用命令行工具(基于JDK10)-LMLPHP

jcmd <pid> VM.system_properties  查看JVM的系统配置信息

JDK常用命令行工具(基于JDK10)-LMLPHP

jcmd <pid> VM.flags  查看JVM的启动参数

JDK常用命令行工具(基于JDK10)-LMLPHP

jhsdb命令

这个命令是jdk9之后才开始有的

jhsdb hsdb

JDK常用命令行工具(基于JDK10)-LMLPHP

这命令会打开图形界面. 看起来很高大上的样子...这个还有待学习....看知乎上R大介绍过, 学习学习.

JDK常用命令行工具(基于JDK10)-LMLPHP

jhsdb jmap --heap --pid <pid>

查看heap的信息,GC使用的算法,heap的配置. (原来的jmap -heap 命令没有了, 被这个命令代替了)

JDK常用命令行工具(基于JDK10)-LMLPHP

jmap

jmap -dump:live,format=b,file=dump.hprof <pid>  输出堆信息到文件.

live指的是活着的对象, 如果不指定, 那么就会输出所有对象的

JDK常用命令行工具(基于JDK10)-LMLPHP

jmap -heap <pid>  heap的信息,GC使用的算法,heap的配置

jdk10 里发现不支持-heap了. 被前面的  `jhsdb jmap --heap --pid <pid>`  这个命令替代了.

jmap -finalizerinfo <pid>   打印等待回收的对象信息

JDK常用命令行工具(基于JDK10)-LMLPHP

输出这个说明没有F-QUEUE队列中并没有等待Fializer线程执行finalizer方法的对象

jmap -histo:live <pid>  打印堆的对象统计

(作用和这个命令相同   jcmd <pid> GC.class_histogram   )

JDK常用命令行工具(基于JDK10)-LMLPHP

jmap -clstats <pid>  类加载器统计信息

JDK常用命令行工具(基于JDK10)-LMLPHP

jps

jps 显示jvm进程id及name

JDK常用命令行工具(基于JDK10)-LMLPHP

jps -q 仅显示进程id

JDK常用命令行工具(基于JDK10)-LMLPHP

jps -m  显示主函数传入的参数

JDK常用命令行工具(基于JDK10)-LMLPHP

jps -l  显示全限定名

JDK常用命令行工具(基于JDK10)-LMLPHP

jps -v  显示jvm参数

JDK常用命令行工具(基于JDK10)-LMLPHP

jstack

jstack <pid>  查看线程堆栈信息

(等同于这个命令 jcmd <pid> Thread.print)

JDK常用命令行工具(基于JDK10)-LMLPHP

jstat

jstat这里讲的更详细:  https://blog.csdn.net/zhaozheng7758/article/details/8623549

05-07 15:27