如何使用火焰图?

线程转储文件往往会有几百行代码(有时会有几千行)。由于其十分冗长,所以我们很难了解其中的所有信息。由 fastThread 工具生成的火焰图能够将这些信息压缩成一个紧凑的图表格式。其能帮助您快速识别热门代码路径(hot code path)。在本文中,我们将了解如何使用 fastThread 工具生成火焰图,从而有效进行调试和故障排除工作。

Continue reading “如何使用火焰图?”

死锁

描述

维基百科恰当地给出了“死锁”的定义:当两个以上的运算单元,双方都在等待对方停止执行,以获取系统资源,但是没有一方提前退出时,就称为死锁。JVM 中发生死锁之后,恢复的唯一方法是重新启动 JVM。

Continue reading “死锁”

线程转储文件分析模式 – 条条大路通罗马

描述

如果线程转储文件中的多个线程最终都调用了同一个方法,那么这可能需要引起您的关注。在存在问题的大多数情况下(比如:数据源响应迟缓、锁未释放、无限循环线程等等),会出现大量线程调用同一个方法的情况。我们需要对这个方法进行详细的分析。

Continue reading “线程转储文件分析模式 – 条条大路通罗马”

线程转储文件分析模式 – 多清道夫

描述

不同 GC 算法类型(Serial、Parallel、G1、CMS)将创建数量不同的默认垃圾回收线程。有关创建的默认线程数详情如下所述。有时,系统会根据默认配置创建过多无用的 GC 线程。我们曾经见过基于默认配置创建 128、256、512 个 GC 线程的情况。太多的 GC 线程也会影响应用程序性能。所以我们应该谨慎配置 GC 线程数量。

Continue reading “线程转储文件分析模式 – 多清道夫”

线程转储文件分析模式 – 运动员

描述

处于‘RUNNABLE’(可运行)状态的线程会消耗 CPU。所以在对消耗较多 CPU 资源的线程转储文件进行分析时,您应该仔细检查处于‘RUNNABLE’状态的线程。通常,线程转储文件会有多个线程被分类为‘RUNNABLE’状态。不过在实际运行过程中,其中的有些不会运行,只是处于等待状态。此时 JVM 仍然会将其分类为‘RUNNABLE’。您需要学会如何将那些假装自己在运行的‘RUNNABLE’线程揪出来。

Continue reading “线程转储文件分析模式 – 运动员”

Blog at WordPress.com.

Up ↑