emm……这节主要说的各个插件等应用,不会给出详细说明,因为如果每个都要说的话肝真的疼。再次只给出一个软件动态分析的方法和流程的大概描述,如果大家对某个工具或者方法感兴趣,度娘走你!(其实很多博客都有,讲的真心好……)

1. 动态程序分析(Dynamic Program Analysis)

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

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

2.程序分析的概念与方法(Program Profiling:Concepts and Approaches)

输出分析器主要功能:

  1. 观察到的程序执行事件的统计结果。
  2. 事件流
  3. 实时或周期性的获取/展示程序运行过程中的数据

分析方法:

  1. 代码注入/插入(insertion/instrumentation):在原始代码中加入某些语句来收集运行时数据,这些语句不改变原程序的语义,但对原程序的性能有轻微的变化。
    优点:准确
    缺点:需要修改源程序,注入的代码可能会影响测试结果
  2. 采样(sampling):以特定频率观察程序执行的特定时刻所展现出的行为与状态。
    外部观察者(VM)周期性监控被测程序,存储各个时刻的快照。基于收集到的数据,分析程序当时所处的状态,分析性能。
    优点:不需要修改程序
    缺点:需要在采样频率与准确度之间折中,可能漏掉小的方法;难以监控内存的使用情况。
  3. 借助虚拟机获取程序性能数据。
    利用虚拟机进行性能监控,所有JVM执行的指令都被记录下来。
    优点:非常准确,可监控时空两方面的性能。
    缺点:与VM绑定,不同的VM提供不同的测量工具。

3. Java中的程序分析工具

主要有以下几种:

  1. Command-line tools(in JDK)
  2. JConsole (in JDK)
  3. VisualVM (in JDK)
  4. Eclipse Memory Analyzer(MAT)

命令行工具

(下面是使用时的截图,有兴趣可以了解一下)

  • jstat:获取JVM的堆使用和GC性能统计数据
  • jmap:输出内存中的对象分布情况

  • jhat:导出deap dump,浏览/查询其中的对象分布情况。(很有意思的一款工具,也不需要下载,就在JDK中,挺好玩的2333,不过OQL确实啊……)

    没错,下面你看到的是OQL栗子,他真的是一种语言……
  • jstack:获取Java线程的stack trace。
    主要用途:有两个,一是定位线程长时间停顿的原因,如多线程间的死锁、死循环、请求外部资源导致的长时间等待等。二是线程中出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。

Jconsole

JConsole是一个GUI监控工具,它使用JVM上的广泛的工具来提供关于运行在Java平台上的应用程序的性能和资源消耗的信息。

Visual VM

功能很强大的一款工具,在eclipse上IDEA上都有插件,而且还有中文版!!!(虽然现在中文版的一部分功能已经不兼容了,不过这不重要!)

它能看很多信息,GC情况,内存情况,CPU性能、各个线程等等信息都能看到,功能非常非常强大,而且还有GUI,做的还非常出色,强烈建议大家下一个看看。

非常强大,仅截了几个图,感觉基本上所有的功能它……都能干!

eclipse内存分析(MAT)

内存堆导出文件的分析工具。再找内存泄漏等非常有帮助!

AHhh……偷了好多懒,用了好多截图,其实也不算吧,这种工具使用真的没有办法讲,要么长篇大论(真的肝疼),要么就自己实践去弄懂,这些工具网上都有详细的教程,大家感兴趣可以去搜一下,然后下一个试试看,真的非常有帮助,尤其是后两个!(哇……给自己的懒惰找了好冠冕堂皇的理由呀2333,溜了溜了……)

第八章软件构造的性能——程序的动态分析方法与工具相关推荐

  1. 第八章软件构造的性能——构造性能的度量、原则与方法(java中的垃圾回收机制及算法)

    这节内容真的是多到炸裂,而且全都是概念,不过很挺有用的,学完这节会对内存管理有一个比较深的理解和认识,就是--这也太多了--嘤嘤嘤T_T 1.性能度量(performance metrics) 第一点 ...

  2. 关于软件构造-lab5性能优化中的一些问题

    软件构造实验5:Lab-5 Static and Dynamic Code Analysis and Code Optimization,Java I/O Performance Optimizati ...

  3. 软件构造笔记整理1-4

    第一章 软件构造的多维度视图和质量目标 1.多维视图 (1)软件是什么: 系统软件vs应用软件 桌面软件/Web软件/移动软件/嵌入式软件 面向商业软件/面向个人的软件 开源软件与专有软件 (2)软件 ...

  4. python怎么做软件程序_看 Python 超级程序员使用什么开发工具

    Python超级程序员使用的开发工具 我以个人的身份采访了几个顶尖的Python程序员,问了他们以下5个简单的问题: 当前你的主要开发任务是什么? 你在项目中使用的电脑是怎样的? 你使用什么IDE开发 ...

  5. 软件构造的视图与质量指标

    软件构造的实质:Transformation between different views(不同视图之间的转换) Multi-dimensional software views 按阶段分:buil ...

  6. 软件构造-Reading 1:静态检查

    大纲: 阅读1:静态检查 目标: 冰雹序列 计算冰雹序列 类型 静态类型 静态检查.动态检查.无检查 惊喜:原始类型并不是真正的数字! 阅读练习 数组和集合 迭代 方法 变化的值与重新分配变量 记录假 ...

  7. 2022 - 软件构造复习

    软件生命周期 一个软件产品或软件系统经历孕育.诞生.成长.成熟.衰亡等阶段,一般称为软件生存周期(软件生命周期). 根据软件所处的状态和特征,划分软件生存周期. 需求定义.软件设计.软件实现.软件维护 ...

  8. 哈工大18年春软件构造课程讨论题

    这是哈工大18年春软件构造课程(徐汉川老师)的讨论题目,少部分答案摘录自课件PPT和网上的资源(链接在文中给出).如有错误还望指出,谢谢. 一.在软件测试过程中,"测试用例的数目" ...

  9. 2022哈工大软件构造课程总结与经验分享(复习指导)

    一.软构1-3讲 1.软件构造的多维度视图和质量目标 2.软件测试与测试优先的编程 3.软件构造过程与配置管理 二.软构4-8讲 4.数据类型与类型检验 5.设计规约 6.抽象数据类型 (ADT) 7 ...

  10. 哈工大软件构造第一章总结

    软件构造第一章名为软件构造的多维视图和质量目标,作为整个课程的开篇,阐释了软件构造的对象是什么,以及软件系统构成的维度和指标. 1.软件构造的多维视图 第一章的第一部分内容可以由下面这幅图来概括: 那 ...

最新文章

  1. Navicat for SQL Server(SQLServer数据库管理)
  2. cookie完全跨域
  3. 五花八门的bug跟踪工具
  4. 菜鸟学Linux命令:端口查看和操作命令
  5. [转帖]真TM长的:SQL Server 2008存储结构——GAM和SGAM、PFS结构、IAM结构、DCMBCM
  6. xxd命令转换二进制十六进制文件
  7. npm包的语义版本控制(Semantic Versioning of Packages)
  8. ps -eo 用户自定义格式显示
  9. CS144 Lab1:StreamReAssemer
  10. html展示微信昵称特殊字符,微信昵称表情符号前端显示问题
  11. Cisco(PacketTracer) - 三层交换机
  12. 如何安装ps的滤镜插件
  13. Linux兄弟连视频教程—B站评论区总结
  14. 171023_矩阵特征值和矩阵函数
  15. 记录oracle的一些操作
  16. 2003-2021年高铁线路信息数据
  17. 采用C++ 11标准判断两个浮点数是否相等
  18. Mac M1通过VMWare Fusion安装Centos7记录(镜像和网络有大坑)
  19. 抖音矩阵号运营工具应该注意的关键事项丨抖音账号矩阵系统源码开发
  20. mysql碎片处理_mysql碎片整理

热门文章

  1. 银河麒麟V10共享文件夹内无法创建wps文件的解决方法
  2. CString与LPCWSTR、LPSTR、char*、LPWSTR等类型的转换
  3. MySQL 入门(四)—— 数据库操作
  4. 易语言linux登录器网关源码,Mir2源码详解之服务端-登录网关(LoginGate)
  5. java自定义表单系统_java自定义表单
  6. 2021-04-25
  7. Android系统 miui主题6,miui主题工具-miui主题工具最新版v2.6.2 安卓版_永辉资源网
  8. Oracle 11g数据库基础教程(第2版)-课后习题-第十三章
  9. excel 第20讲:图表基础
  10. 离散傅里叶变换MATLAB实现