服务器分析jvm运行情况的命令

一.简述

1.jstack命令

能得到运行java程序的java stack和native stack的信息。可以轻松得知当前线程的运行情况。

2.jmap命令

得到运行java程序的内存分配的详细情况。例如实例个数,大小等。尤其是这个命令可以导出一份binary heap dump的bin文件,这个文件能够直接用Eclipse Memory Anayliser来分析,并找出潜在的内存泄漏的地方。

3.jstat命令

是一个比较实用的一个命令,可以观察到classloader,compiler,gc相关信息。可以时时监控资源和性能

二.jstack命令

1.执行命令:top

讲解:

  • 输入top命令后按一下大写的P按cpu占用率排序
  • 输入top命令后按数字1,查看的cpu的核数为几核
  • top命令显示的是你的程序占用的cpu的总数,也就是说如果你是4核cpu那么cpu最高占用率可达400%,top里显示的是把所有使用率加起来

在这里插入图片描述
看到Tasks代表当前展示的是进程信息;得到占用cpu最高的进程PID为:15920

2.执行命令:jstack 进程PID > quanran_dump

eg: jstack 15920 > quanran_dump

  • 讲解:这是将当前进程的栈运行情况写进文件,此文件保存在当前你执行命令的目录
3.可以执行以下三个命令得到进程PID 15920里的所有线程资源占用情况,进而得到线程的TID
3.1:执行命令:top -Hp 进程PID

eg: top -Hp 15920
在这里插入图片描述
看到Threads代表当前展示的是线程信息;此处CPU占用率最高的是29%,它的线程TID就是PID列展示的值:15941。

3.2:执行命令:ps -mp 进程PID -o THREAD,tid,time

eg: ps -mp 15920 -o THREAD,tid,time

在这里插入图片描述
此处CPU占用率最高的是12.2%,它的线程TID是:15941。

3.3:在top命令里按shift+h

eg: 先执行命令top,看到展示的进程信息后,在按shift+h,会弹出3.1命令的线程展示图,在按shift+h又回切回进程展示图。
其中看到的线程展示图结果:此处CPU占用率最高的是12.2%,它的线程TID是:15941。

4:执行命令:printf “%x\n” 线程tid , 得到16进制线程pid。

eg:printf “%x\n” 15941 -> 得到16进制线程pid: 3e45
在这里插入图片描述

5:执行命令:vim quanran_dump 或 less -m quanran_dump

eg:打开quanran_dump文件后,搜索3e45关键字,看3e45关键字所在行的后面的行,判断是什么问题导致的cpu占用率过高。

三.jmap命令

四.jstat命令

五.一些现成的案例分析
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值