# 6.7动态分析工具

动态分析工具检查软件的运行时行为。通过分析和比较正在运行的程序，它们可以帮助开发人员识别问题并理解流程。\
动态分析的目的包括:\
• 速度测量\
• 特定系统组件相对于其他组件的时间测量\
• 内存使用量的测量\
• 统计分析(单个系统组件的使用频率是多少？)

#### &#xD;6.7.1需求和决策标准

• 对运行时行为、内存需求和CPU使用的影响尽可能小\
• 结果展示清晰易懂，适合目标群体\
• 也适用于分布式系统

#### &#xD;6.7.2动态分析工具面临的挑战

• 测量本身会影响系统(在物理学中类似地称为海森堡不确定性原理)。这在并发系统或进程中尤为明显。\
• 由于涉及的数据量巨大，动态分析产生的数据很快就变得难以理解。

#### &#xD;6.7.3 示例

• AppDynamics (AppDynamics, Inc.)\
• IBM Security AppScan（IBM）\
• JBoss Profiler（JBoss 社区）\
• JProfiler (ej-technologies)\
• JRat(开源)\
• Jtest（Parasoft）\
• Perf4J(开源)
