[JVM]dump分析工具_fastthread.io

目录

前言

使用


前言

dump分析工具,真解决问题还是得靠这种强大的图形化界面hhh

这个之前写在印象笔记中,现在拿出来分享整理。

使用

https://fastthread.io/

将线程 jstack pid 出来之后,压缩一下成为zip 然后 上传上去

一般线程dump后都是人工去分析,Java线程Dump分析工具fastThread。

每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机打印的thread dump略有不同,但是大多都提供了当前活动线程的快照,及JVM中所有Java线程的堆栈跟踪信息,堆栈信息一般包含完整的类名及所执行的方法,如果可能的话还有源代码的行数。

Thread Dump 能诊断的问题

查找内存泄露,常见的是程序里load大量的数据到缓存;发现死锁线程。

Thread dumps 能帮助我们判断 CPU 峰值、死锁、内存异常、应用反应迟钝、响应时间变长和其他系统问题。一些在线的分析工具 也能帮助我们分析和定位问题,但是这些工具都要求有一个 dump 文件。

jstack

jstack 是一个抓取 thread dump 文件的有效的命令行工具,它位于 JDK 目录里的 bin 文件夹下(JDK_HOMEbin),以下是抓取 dump 文件的命令:

jstack -l > 

比如:

jstack -l 6227 >6227.jstack

这个fastthread 倒是没有限制是txt还是.jstack

如果有异常会有提示:

类似:

这样就会出一个关于这个Thread Dump的全方面分析报告,方便你定位相关问题。

其中包括:

线程处于各种生命周期的总数;

状态百分比,有没有死锁的;

thread group :

这边的databus是我们的cas服务开的

gang worker是属于gc相关的

守护线程与非守护线程的比例

具有相同堆栈跟踪的线程:

(如果很多线程开始显示相同的堆栈跟踪,这可能是一个问题,了解RSI模式)

Identical Stack trace

CPU consuming threads

If application is consuming high CPU, investigate below threads. Learn Athlete pattern

阻塞线程-传递图(正常可能是 No transitive blocks found)

GC 线程(下面正常会提示normal)

是否有stackoverflow的错误

Complex DeadLocks

Dead Lock

Finalizer Thread

(If finalizer thread is BLOCKED or WAITING for a prolonged period, it can result in OutOfMemoryError, to learn more visit Leprechaun Trap pattern

)这个线程可能会导致内存溢出Finalize对象太多可能会导致线程阻塞,导致内存溢出。

Exception

Flame Graph

Bottom up Call Stack Tree

(All threads stacktrace are combined in to one single tree. Learn it's benefits.)

JVM常用监控工具有很多,其中一个重要的工具就是dump分析工具dump文件是指Java进程的内存快照,可以用于分析Java进程的内存使用情况,了解Java进程内部的情况。 下面介绍几个常用的dump分析工具: 1. jmap jmap是JDK自带的一个命令行工具,可以生成Java进程的内存快照。使用jmap生成dump文件的命令如下: ``` jmap -dump:format=b,file=<filename> <pid> ``` 其中,format=b表示生成二进制格式的dump文件,file=<filename>表示指定保存dump文件的路径和文件名,<pid>表示Java进程的进程ID。 2. jstack jstack也是JDK自带的一个命令行工具,可以打印Java进程的线程堆栈信息。使用jstack生成dump文件的命令如下: ``` jstack -F <pid> > <filename> ``` 其中,-F表示在进程不响应时强制获取线程堆栈信息,<pid>表示Java进程的进程ID,> <filename>表示将线程堆栈信息输出到指定文件。 3. VisualVM VisualVM是一个功能强大的Java监控和分析工具,可以监控和分析本地和远程Java进程。VisualVM可以生成Java进程的各种信息,包括dump文件。使用VisualVM生成dump文件的步骤如下: - 在VisualVM中打开需要生成dump文件的Java进程。 - 选择“Heap Dump”选项卡,点击“Heap Dump”按钮。 - 选择保存dump文件的路径和文件名,点击“Save”按钮。 4. Eclipse Memory Analyzer Eclipse Memory Analyzer是一款功能强大的Java内存分析工具,可以帮助开发人员分析Java进程的内存使用情况。Eclipse Memory Analyzer可以打开各种格式的dump文件,包括使用jmap、jstack和VisualVM生成的dump文件。 以上是常用的dump分析工具,可以帮助开发人员了解Java进程的内存使用情况。同时,需要注意的是,生成dump文件会对Java进程产生一定的影响,需要谨慎使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值