项目变慢的可能性:
- Stop The World 过长 (通过查看GC日志来判断)
- 项目依赖的资源导致变慢: 数据库、网络...
- Code Cache 满了
- 线程争抢过于激烈
- 服务器问题:操作系统问题(可通过重启大法)、其它进程争抢资源
线程争抢过于激烈,可使用 visualvm 查看。同时可通过 Visualvm保存dump文件,使用其它工具来分析。
可视化分析线程dump的工具:
- fastThread 官网: Smart Java thread dump analyzer - thread dump analysis in seconds . 此工具和 Gceasy (官网:Universal JVM GC analyzer - Java Garbage collection log analysis made easy)是同一家公司的
- PerfMa 官网 : HeapDump - Java线程Dump分析
定义线程池的时候,可以给线程池设定一个特殊的命名 ,用于区分线程名称,方便查找
new ThreadFactoryBuilder().setNameFormat("my-pool-%d").build(); %d是后面的数字
jps 查看进程号 --> jstack pid 可以看到进程号的名称