前言
陆续在知乎上更新了内容,CSDN的使用频率有所下降。欢迎关注勤奋的小牛,分享学习内容。一起学习一起进步!
TCmalloc
TCmalloc(Thread-Caching Malloc) 是 Gperftools 提供的内存分配器(堆分析器),旨在提高多线程程序的内存分配性能。
主要用于:
计算出在任何给定时间程序堆中的内容
定位内存泄漏
找一些做大量分配的地方
分析系统记录所有内存的分配和释放。它跟踪每个分配站点的各种信息。分配位置被定义为调用malloc、calloc、realloc或new时的活动堆栈跟踪。
使用它有三个部分:将库链接到应用程序、运行代码和分析输出。
它有以下特点:
线程局部缓存: tcmalloc 使用线程局部缓存来减小锁竞争,提高并发性能。
高效的内存回收: tcmalloc 采用了一些高效的内存回收策略,减少了内存碎片。
堆栈跟踪: tcmalloc 能够记录分配和释放内存的堆栈跟踪信息,用于后续性能分析。
ASan
ASan 是一个快速内存错误检测工具,可以检测堆缓冲区溢出、栈缓冲区溢出、全局缓冲区溢出、使用已释放内存和内存泄漏。AddressSanitizer (ASan) 是一个快速的内存错误检测工具,支持检测堆缓冲区溢出、栈缓冲区溢出、全局缓冲区溢出、使用已释放内存和内存泄漏等问题。下面是一个详细的使用案例,展示如何使用 ASan 检测和修复内存错误。
Valgrind
Valgrind 是一个强大的动态分析工具,可以帮助开发者检测程序中的内存错误和性能问题。它包含多个工具,其中最常用的是Memcheck,用于检测内存泄漏、未初始化的内存访问和无效的内存访问等问题。