语法:jhat [ options ] heap-dump-file
- -stack false|true:关闭对象分配调用栈跟踪。 如果分配位置信息在堆转储中不可用. 则必须将此标志设置为 false. 默认值为 true.
- -refs false|true:关闭对象引用跟踪。 默认值为 true. 默认情况下, 返回的指针是指向其他特定对象的对象,如反向链接或输入引用, 会统计/计算堆中的所有对象。
- -port port-number:http端口号指定,就是上面通过浏览器访问的端口号,默认是7000
- -exclude exclude-file:指定一个文件,该文件列出应从可达对象查询中排除的数据成员。
- -baseline exclude-file:指定基线堆转储。两个堆转储中具有相同对象ID的对象被标记为不是新的。其他对象被标记为新的。这对于比较两个不同的堆转储非常有用。
- -debug int:设置debug等级,0意味着不输出debug信息,等级越高输出的日志越详细。
- -version:版本号
jhat命令在JDK9、JDK10中已经被删除了,官方建议使用VisualVM代替。
jstackjstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主 要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。
语法:jstack [ options ] pid
options 选项:
- -m:打印同时具有Java和本机C/C 帧的混合模式堆跟踪。
- -l:打印有关锁的其他信息,例如拥有java.util.concurrent同步器的列表
对于桌面操作系统,java提供了Jconsole和jvisualvm可视化工具。可视化工具就是将上面几个命令行工具整合到一起使用的一个工具。
jconsolejconsole命令启动一个图形控制台工具,该工具允许您监视和管理本地或远程计算机上的Java应用程序和虚拟机。
命令行输入Jconsole命令
选择要监控的程序,可选择本地进程也可以选择远程进程,如果选择远程进程的话要在服务器开启JMX,一般不开启。
进入控制台首页