前言
关于fastthread的介绍直接看官方主页就行:
支撑核心转储剖析、hs_err_pid文件剖析,这个笔者也不知道,后边再了解下
举个比方
package com.study.fastthread;
import lombok.SneakyThrows;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
public class DeadLockDemon {
@SneakyThrows
public static void main(String[] args) {
DeadLockTask deadLockTask = new DeadLockTask();
//多线程模仿死锁
Thread threadA = new Thread(deadLockTask);
Thread threadB = new Thread(deadLockTask);
threadA.start();
threadB.start();
threadA.join();
}
private static class DeadLockTask implements Runnable {
private Object lockA = new Object();
private Object lockB = new Object();
private AtomicBoolean flag = new AtomicBoolean(false);
@SneakyThrows
@Override
public void run() {
if (flag.compareAndSet(false, true)) {
synchronized (lockA) {
TimeUnit.SECONDS.sleep(2);
synchronized (lockB) {
System.out.println("死锁内部代码");
}
}
} else {
synchronized (lockB) {
TimeUnit.SECONDS.sleep(2);
synchronized (lockA) {
System.out.println("死锁内部代码");
}
}
}
}
}
}
笔者之前运用visual vm,所以翻开看看,一望而知,能够dump下来(也能够运用jstack -l <pid>
)运用fastthread看看对比一下。


运用
翻开官网主页挑选文件即可。
线程计数摘要

各种线程状况能够参考笔者之前的文章。
NEW(尚未启动的线程)、RUNNABLE(履行中的线程)、BLOCKED(堵塞的线程,比方等待一个synchronized锁)、WAITING(无限期等待另一个线程)、TIMED_WAITING(在指定时间内等待)、TERMINATED(现已退出的线程)
线程组


看护 vs 非看护线程

- 看护线程:

能够看到许多RMI、JMX、C1、C2线程,笔者也不是很清楚,搜到一些材料贴在文末。
- 非看护线程:

能够看到new出来的线程、main线程、VM和GC相关的线程都对错看护线程。
死锁

具有相同stack trace的线程


- 看看最多的:

- block的

最终履行的方法

CPU耗费线程

堵塞线程-传递图

GC线程

线程仓库深度

能够看到递归问题
复杂死锁

Finalizer Thread

反常

火焰图


自下而上调用栈树

总结
能够看到,fastthread各方面都比visual vm详细,除了没有展示线程运转时间。 可是有时候多了也不容易发现问题,所以咱们需求知道由于线程相关导致的问题有哪些,然后对应去看,比方:
- 某个接口一直没有呼应,可是各项资源都充足,能够去看看死锁。
- 一切接口都呼应很慢,能够先看看线程计数摘要,看看是不是线程数超支,那部分超支能够看看线程组,再细看下是那部分代码占用了许多能够看看具有相同stack trace的线程,或许直接看最终履行的方法,有时候并不是由于某个线程本身发生了堵塞而是由于其他线程,能够看看堵塞线程-传递图
- CPU飙升,能够看看CPU耗费线程。
- 内存泄漏了,看看GC线程是否正常,Finalizer Thread是否正常。
- 仓库溢出,能够看看线程栈深度。
- 需求具体的剖析能够看看自下而上调用栈树。
相关材料
FastThread 相关的工具介绍:欲穷千里目,更上一层楼
fastthread
hs_err_pid.log日志,风趣的两个Jvm参数
Generating a Java Core Dump
Thread.join() 的运用
理解Java RMI 一篇就够
JIT即时编译器(C1和C2)
什么是JMX?
敞开成长之旅!这是我参加「日新方案 2 月更文挑战」的第 8 天,点击查看活动详情
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。