java内存监视器_java面试-JDK自带的JVM 监控和性能分析工具用过哪些?

本文详细介绍了JDK提供的各种监控和性能分析工具,如jps、jinfo、jmap、jstat、jhat、jstack,以及JConsole和VisualVM等。这些工具用于监视Java进程状态、生成堆转储快照、分析内存使用、检查线程堆栈信息等,帮助开发者诊断和优化JVM性能。同时,还提及了堆外内存中的直接内存和JDK的Native Memory Tracking特性。
摘要由CSDN通过智能技术生成

一、JDK的命令行工具

1、jps(JVM Process Status Tools):虚拟机进程状况工具

jps -l

2、jinfo(Configuration Info for java):Java配置信息工具

jinfo [option] pid

3、jmap(Memory Map for java):java内存映像工具

用于生成堆转储快照,即dump文件

jmap -dump:format=b,file=eclipse.bin 3500 #3500是通过jps命令拿到的LVMID

4、jstat(JVM Statistics Monitoring Tool):虚拟机统计信息监视工具

jstat -gc 2764 250 20 # -gc监视java堆状况 每250毫秒查询一次进程2764垃圾收集状态,共查询20次

jstat -gcutil 2754 #监视java堆内存使用状况

top -p 12309 -H #-p用于指定进程,-H用于获取每个线程的信息

5、jhat(JVM Heap Analysis Tool):虚拟机dump文件分析工具

jhat eclipse.bin

屏幕显示“server is ready”,用户在浏览器中键入http://localhost:7000/就可以看到分析结果

6、jstack(Stack Trace for java):java虚拟机自带的堆栈跟踪工具

jstack -l 3500

jstack命令查看线程堆栈信息时可能会看到的线程的几种状态:

NEW,未启动的。不会出现在Dump中。

RUNNABLE,在虚拟机内执行的。

BLOCKED,受阻塞并等待监视器锁。

WATING,无限期等待另一个线程执行特定操作。

TIMED_WATING,有时限的等待另一个线程的特定操作。

TERMINATED,已退出的。

jstack用于生成java虚拟机当前时刻的线程快照。

线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合。

生成线程快照的主要目的是定位线程出现长时间停顿的原因。

线程长时间停顿的主要原因:等待外部资源(数据库连接、网络资源、设备资源)、死循环、锁等待(活锁和死锁)。

线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源

二、JDK的可视化工具

JConsole:Java监视与管理控制台

VisualVM:多合一故障处理工具

三、堆外内存中的直接内存

使用JDK自带的Native Memory Tracking(NMT特性)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值