软件构造 8.2 Dynamic Program Analysis Methods and Tools

1.动态程序分析

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

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

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

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

2.分析方法

分析方法有:

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

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

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

3.java性能分析工具

命令行分析工具:

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


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


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


jstack:获取java线程的stack trace


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


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


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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值