1.动态程序分析

动态程序分析:根据程序一次或多次执行的结果和结果,分析代码在时空性能方面所展现出的性质。

静态分析使用抽象的输入值;动态分析使用具体的输入值

为使动态分析有效,目标程序必须执行足够多次,以观察到完整的、不同的执行行为;通过代码覆盖度,确认动态分析是否已经足够;要尽可能小的影响程序原本的执行,否则性能测量不准确。

80-20规则:20%的程序负责80%的执行时间。

2.分析方法

分析方法有:

代码注入:在原始程序中加入某些语句来收集运行时数据,这些语句不改变原程序的语义,但对原程序的性能有轻微变化。

采样:以特定的频率观察程序执行的特定时刻所展现出的行为和状态。

借助虚拟机获取程序性能数据。

3.java性能分析工具

命令行分析工具:

jstat:获取JVM的堆使用和GC的性能统计数据;


软件构造 8.2 Dynamic Program Analysis Methods and Tools

jmap:输出内存中对象分布情况;

软件构造 8.2 Dynamic Program Analysis Methods and Tools

jhat:导出heap dump,浏览/查询其中的对象分布情况

软件构造 8.2 Dynamic Program Analysis Methods and Tools

jstack:获取java线程的stack trace

软件构造 8.2 Dynamic Program Analysis Methods and Tools

Jconsole:JConsole是一个GUI监视工具,它使用JVM上的大量工具来提供有关在Java平台上运行的应用程序的性能和资源消耗的信息。

软件构造 8.2 Dynamic Program Analysis Methods and Tools

VisualVM是一个工具,它提供了一个可视化界面,用于查看Java应用程序在JVM上运行时的详细信息

软件构造 8.2 Dynamic Program Analysis Methods and Tools

MAT:MAT是内存堆导出文件的分析工具,使用内存分析器分析数亿个对象的生产性堆转储,快速计算保留的对象大小,查看谁阻止垃圾收集器收集对象,运行报告以自动提取泄漏嫌疑人。

软件构造 8.2 Dynamic Program Analysis Methods and Tools



相关文章:

  • 2021-06-18
  • 2022-12-23
  • 2021-04-18
  • 2021-10-30
  • 2021-12-18
  • 2021-11-28
  • 2021-10-05
  • 2021-12-17
猜你喜欢
  • 2021-06-17
  • 2021-09-07
  • 2021-12-27
  • 2021-09-04
  • 2021-07-15
  • 2021-12-17
  • 2022-12-23
相关资源
相似解决方案