欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-11 14:40:34
虽然我是在jdk10环境下, 但是大体上和jdk8是差不多的. 总共有这么多 本来想着一口气把所有命令都边学边总结一下的, 结果发现....有些还真的不是很常用....或者说我这个水平还接触不到那么多. 于是我就把我能使用到的几个常用的总结一下了. 当做是笔记了. jshell jshell启动 j ......

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

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

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

jshell

jshell启动

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

jshell退出

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

jshell使用

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

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

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

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

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

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

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

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

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

jcmd

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

jhsdb命令

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

jhsdb hsdb

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

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

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

jhsdb jmap --heap --pid <pid>

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

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

jmap

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

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

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

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

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

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

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

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

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

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

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

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

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

jps

jps 显示jvm进程id及name

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

jps -q 仅显示进程id

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

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

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

jps -l  显示全限定名

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

jps -v  显示jvm参数

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

jstack 

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

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

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

jstat 

jstat这里讲的更详细: