【linux】Valgrind工具集详解(十二):DHAT:动态堆分析器
一、概述
DHAT动态堆分析器。Massif(堆分析器)是在程序结束后输出分析结果,而DHAT是实时输出结果,所以叫做动态堆分析器。Massif只记录堆内存的申请和释放,DHAT还会分析堆空间的使用率、使用周期等信息。
DHAT的功能:它首先记录在堆上分配的块,通过分析每次内存访问时所指定的块判断是否是之前已经记录过的块,并收集统计这些信息,最终输入如下结果:
- 总共分配的堆内存数(字节数和块数);
- 程序运行中堆内存的最大数(字节数和块数);
- 块平均寿命(从分配到释放之间的指令数);
- 块中每个字节的平均读写次数(“访问率”);
- 对于总是仅分配一个大小的块的分配点,该大小为4096字节或更少:计数表示访问块内每个字节偏移的频率。
使用这些统计信息可以得出以下结果:
- 潜在的泄漏(进程生命周期内):由该点分配的块只是累积,并且仅在运行结束时释放;
- 过度浪费内存(英文原文excessive turnover):由该点分配的块只是累积,吞噬很多堆内存,但会释放,不会保持很长时间;
- 过度瞬态内存:从分配到释放的时间非常短;
- 无用或未充分利用的内存:已分配但未完全使用的内存,或只写到内存中但随后并没有读的内存;
- 使用效率低的块
<
【linux】Valgrind工具集详解(十二):DHAT:动态堆分析器相关推荐
- 【linux】Valgrind工具集详解(二):入门
一.使用valgrind 1.安装 安装超级简单: sudo apt-get install valgrind 2.使用 运行valgrind -h可以查看详细使用方法,命令格式如下: valgrin ...
- 【linux】Valgrind工具集详解(八):Memcheck命令行参数详解
[linux]Valgrind工具集详解(五):命令行详解中不够全,在此专门针对Memcheck工具中的命令行参数做一次详细的解释. Memcheck命令行选项 –leak-check=<no| ...
- Linux内核Thermal框架详解十二、Thermal Governor(2)
本文部分内容参考 万字长文 | Thermal框架源码剖析, Linux Thermal机制源码分析之框架概述_不捡风筝的玖伍贰柒的博客-CSDN博客, "热散由心静,凉生为室空" ...
- 【linux】Valgrind工具集详解(五):命令行详解
一.使用方法 usage: valgrind [options] prog-and-args 使用方法:valgrind [参数选项] 程序和参数 二.选择工具 tool-selection opti ...
- 【linux】Valgrind工具集详解(一):简介
一.Valgrind概述 Valgrind是用于构建动态分析工具的仪器框架.它附带了一组工具,每个工具都执行某种调试,分析或类似任务,可帮助您改进程序.Valgrind的架构采用模块化设计,因此可以轻 ...
- 【linux】Valgrind工具集详解(十三):Helgrind(线程错误检测器)
一.概述 Helgrind用于检测C.C ++和Fortran程序中使用符合POSIX标准的线程函数造成的同步错误. POSIX中关于线程的主要抽象描述有:共享公共地址空间的一组线程.线程创建.线程连 ...
- 【linux】Valgrind工具集详解(七):Memcheck(内存错误检测器)
一.概述 Memcheck是一个内存错误检测器.它可以检测C和C ++程序中常见的以下问题: 1.非法内存:如越界.释放后继续访问: 2.使用未初始化的值: 3.释放内存错误:如double-free ...
- 【linux】Valgrind工具集详解(十):SGCheck(检查栈和全局数组溢出)
一.概述 SGCheck是一种用于检查栈中和全局数组溢出的工具.它的工作原理是使用一种启发式方法,该方法源于对可能的堆栈形式和全局数组访问的观察. 栈中的数据:例如函数内声明数组int a[10],而 ...
- 【linux】Valgrind工具集详解(十五):Callgrind(性能分析图)
一.概述 1.Callgrind Callgrind用于记录程序中函数之间的调用历史信息,对程序性能分析.默认情况下,收集的数据包括执行的指令数,它们与源码行的关系,函数之间的调用者.被调用者关系以及 ...
最新文章
- 网闸与防火墙的区别_网关和网闸、防火墙的区别?
- 不同的PCB混装方式及加工工艺
- java结丹期(11)----javaweb(jstljsp)
- Spark(6)——Spark与scala交互
- 底层系统如何实现数据一致性/系统底层如何保证有序性
- linux 2.6.35 内核配置 usb,Linux 2.6.24.4移植到S3C2410(nano2410)之:USB
- MIFARE系列6《射频卡与读写器的通讯》
- js原型和原型链_理解JS中的原型和原型链
- 初学网站建设,要学习些什么?
- php mb strlen 开启,php mb_strlen是什么函数
- JMeter Exception: java.net.BindException: Address already in use: connect(转)
- linux input设备冲突,linux input设备怎么固定event handler
- 计算机组成原理——第三章
- 网卡驱动修改服务器,改造INTEL网卡驱动使桌面型网卡支持Windows Server 2012、2016、2019系统...
- python数据挖掘与分析心得体会_Python数据挖掘——文本分析
- 小米6 刷LineageOS教程
- qt creator报错 error: C1083: 无法打开包括文件:“QMediaPlayer”
- SameTime8.5.1安装失败故障诊断
- 《深入理解java虚拟机》学习-第三章-内存分配策略
- 读书笔记 ·《简约至上》第二章 明确认识
热门文章
- 少样本学习原理快速入门,并翻译《Free Lunch for Few-Shot Learning: Distribution Calibration》
- archlinux升级内核后virtualbox不能启动虚拟机
- OpenCV播放视频-----滚动条随着视频播放移动代码
- java保存多张图片格式_从多个URL下载多个图像文件并保存到本地计算机(使用R)...
- 三菱触摸屏usb驱动安装_2020年三菱EXPRESS SWB和LWB:竟然是日系中唯一没有屏幕的面包车...
- Fast ORB-SLAM
- AR设备单目视觉惯导SLAM算法综述与评价
- There's no Qt version assigned to this project for platform Win32/Win64
- 在Ubuntu 16.04.3 LTS上玩转quic-go项目
- BZOJ 1801 [Ahoi2009]中国象棋(线性动规)(洛谷P2051)