JDK常用命令行工具(基于JDK10)
虽然我是在jdk10环境下, 但是大体上和jdk8是差不多的. 总共有这么多
本来想着一口气把所有命令都边学边总结一下的, 结果发现....有些还真的不是很常用....或者说我这个水平还接触不到那么多. 于是我就把我能使用到的几个常用的总结一下了. 当做是笔记了.
jshell
jshell启动
jshell退出
jshell使用
就想python一样, 可以每一行代码都返回一个交互结果. 编写短小的程序来运行的时候, 就不用新建项目, 然后新建一个类了...可以直接上核心代码了.
还以为我从此以后不再需要计算器了
java的jshell计算大数的时候如下:(果然不出所料...失望..)
怎么解决呢? 肯定是因为默认数字都是Integer型. 只好手动调用BigInteger了.
jcmd
jcmd -h 输出jcmd的帮助信息.
jcmd -l 打印出所有jvm进程信息.
红色圈出来的数字是pid, 也就是进程id
jcmd <pid> PerfCounter.print 性能统计信息
jcmd <pid> help 列出可执行的进程操作
jcmd <pid> VM.version 看JVM版本信息
从上面一小节的截图中咱们挑一个执行一下. 比如 倒数第二行的VM.version
这样就利用了VM.version操作打印出了JDK虚拟机的版本.
jcmd <pid> GC.class_histogram 查看系统中类统计信息
(和这个命令是一个效果 jmap -histo <pid> )
jcmd <pid> VM.uptime 查看 JVM 的启动时长
jcmd <pid> Thread.print 查看线程堆栈信息
(等同于这个命令: jstack <pid> )
jcmd <pid> GC.run 对JVM执行System.gc()
jcmd <pid> VM.system_properties 查看JVM的系统配置信息
jcmd <pid> VM.flags 查看JVM的启动参数
jhsdb命令
这个命令是jdk9之后才开始有的
jhsdb hsdb
这命令会打开图形界面. 看起来很高大上的样子...这个还有待学习....看知乎上R大介绍过, 学习学习.
jhsdb jmap --heap --pid <pid>
查看heap的信息,GC使用的算法,heap的配置. (原来的jmap -heap 命令没有了, 被这个命令代替了)
jmap
jmap -dump:live,format=b,file=dump.hprof <pid> 输出堆信息到文件.
live指的是活着的对象, 如果不指定, 那么就会输出所有对象的
jmap -heap <pid> heap的信息,GC使用的算法,heap的配置
jdk10 里发现不支持-heap了. 被前面的 `jhsdb jmap --heap --pid <pid>` 这个命令替代了.
jmap -finalizerinfo <pid> 打印等待回收的对象信息
输出这个说明没有F-QUEUE队列中并没有等待Fializer线程执行final
izer方法的对象
jmap -histo:live <pid> 打印堆的对象统计
(作用和这个命令相同 jcmd <pid> GC.class_histogram )
jmap -clstats <pid> 类加载器统计信息
jps
jps 显示jvm进程id及name
jps -q 仅显示进程id
jps -m 显示主函数传入的参数
jps -l 显示全限定名
jps -v 显示jvm参数
jstack
jstack <pid> 查看线程堆栈信息
(等同于这个命令 jcmd <pid> Thread.print)
jstat
jstat这里讲的更详细: https://blog.csdn.net/zhaozheng7758/article/details/8623549
学如不及,犹恐失之