java 生成 Thread dump 分析

最近线上产品不知道什么情况,内存每次都超出限制大小,占用大量内存导致服务报警。

今天dump一个服务的线程调用栈,分享一下dump 的 过程。

开始操作

  1. 获取内存消耗最大的进程id
top -d 1
按 Shift m  已内存消耗排列 

在这里插入图片描述
可以看到我们这java占用内存还是很高啊。别介意图例,我这里就是分享怎么去生成 thread dump 的操作方法,随便起了一个简单的jar 服务并前台运行的,没必要死磕。

  1. 获取进程中那个线程使用最高
top -Hp pid
按 Shift m 和 Shift p 先安装 内存排列后安装 CPU消耗排列

在这里插入图片描述
这里可以看到这个子进程 211 的占用比其他进程要高点哈,记住进程号。

  1. 生成 Thread dump
kill -3 211
切换到另外一个终端,上面我讲了我是临时启动的一个jar在前台运行,生成的 Thread dump 信息也会在前台显示

在这里插入图片描述
我们将信息复制在一个 文件中,稍后去分析看一下它。

分析 Thread dump

这里推荐使用这个在线分析java 线程,可视化整体还可以
在这里插入图片描述
这里推荐使用这个在线分析java 线程,可视化整体还可以

注意

kill -3 对java进程生成thread dump,是不能够将相应的内容转储到自己制定的文件中了(至少我是没有尝试成功,而且网上也没有找到相关的资料)。

它只会产生在终端(前台启动的程序)、nohup.out(后台启动的应用)、catalina.out(tomcat应用)、weblogic等应用同理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值