Java必看面试题——jvm常用工具

jstack

  • 可以查看或导出 java 应用程序中线程堆栈信息
  • jstack用于生成java虚拟机当前时刻的线程快照
  • 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。
  • jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。
  • 处理问题:
    高cpu占用率排查
    死锁线程的定位

jstat

  • 在JDK中存在,用于提供与JVM性能相关的统计信息,例如垃圾收集,编译活动。
  • jstat的主要优势在于,它可以在运行JVM且无需任何先决条件的情况下动态捕获这些指标
  • 可以查看堆内存各部分的使用量,以及加载类的数量
  • 实时显示本地或者远程 JVM进程中类装载、内存、垃圾收集器、JIT编译等数据。
  • jstat命令详解
  • 处理问题:
    频繁gc定位

jmap

  • 它可以生成 java 程序的 dump 文件
  • 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列
  • jmap 不能用于查询当前运行的JVM 属性和参数值
  • 使用场景:
    某环境经常full gc,长期内存占用率很高,疑似内存泄露

jinfo

实时查看和调整JVM配置参数

  • 查看java系统参数
  • 调整JVM参数
  • 查看某个JVM参数

jsp

  • jsp命令用于查询真正运行的JVM进程

jcmd

  • 在JDK 1.7之后,新增,是一个多功能工具,可以用来导出堆,查看Java进程,导出线程信息,执行GC等
  • 发送诊断命令请求到正在运行的Java虚拟机(JVM)。它必须和JVM运行在同一台机器上,并且与启动JVM用户具有相同的组权限。
  • jcmd拥有jmap的大部分功能,并且Oracle官方也建议使用jcmd代替jmap
  • 处理问题:
    抓现场堆栈(dump threads)
    抓运行时堆内存(dump heap)
    采集GC日志
    定位高CPU占用问题等。

查看gc、监控频繁GC使用

jstat


定位线程死锁用哪个

jstack


分析定位频繁gc、Full GC、内存泄漏

jmap


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值