前言
这个章节相当关键,因为前面4篇文章主要介绍了关于虚拟机内存分配和回收技术各方面的内容
工具是运用知识处理数据的手段
JDK的命令行工具
对于一般的程序员来说,其实我们知道的有两个命令工具java.exe 和javac.exe,但是其他的bing目录下面的命令行程序却未必知道。这里我说下其中用于监视虚拟机和故障处理工具。这些虽然sun公司是免费送给我们的,没有提供技术支持,但是也是非常的强大
名称 | 全称 | 主要作用 |
---|---|---|
jps | jvm process status tool | 显示指定系统内所有的hotspot虚拟机进程 |
jstat | jvm statistics monitoring tool | 用于收集hotspot虚拟机各方面的运行数据 |
jinfo | configuration info for java | 显示虚拟机配置信息 |
jmap | memory map for java | 生成虚拟机的内存转储快照(heapdump文件) |
jhat | jvm heap dump browser | 用于分析heapmap文件,它会建立一个http/html服务器让用户可以在浏览器上查看分析结果 |
jstack | stack trace for java | 显示虚拟机的线程快照 |
1、jps (JVM process status 虚拟机进程状态)
1.1、jps -l :输出主类或者jar的完全路径名
1、下面这两个是我运行的springBoot主类,里面有main函数(也就是说main函数还没有停止运行)
2、随便启动一个普通的main函数,然后debug打上断点不让结束运行
1 | package com.hlj.jvm.JvmBin; |
1.2、jps –v :输出jvm参数(查看已经运行的main的JVM参数)
1、配置上面的main的jvm参数为
1 | -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 |
2、jps -v
1.3、jps -q 显示java进程号
其实也可以通过 jps -l 查看进程号,进而可以直接关掉相关的main(之前端口冲突了,还需要通过lsof -i tcp:端口 查找,现在直接可以使用它岂不是更加方便呢)
1.4、如果需要查看其他机器上的jvm进程,需要在待查看机器上启动jstatd。
2、jstat (JVM Statistics Monitoring Tool虚拟机统计信息监控工具)
用于监视虚拟机各种运行状态信息的命令行工具,可以显示本地或者是远程虚拟机进程中的类加载,内存,垃圾收集,在没有GUI图形页面,踏实运行期定位虚拟机性能的首选工具
1 | class (类加载器) |
举例 命令格式是
1 | 每250毫秒收集一次进程为2764 的垃圾收集状况,一共查询20次 |
监视内容与-gc相同,但输出主要关注已使用空间占总空间的百分比
1 | S0 S1 (Survivor0 Survivor1) |