6个版本

0.3.3 2024年2月20日
0.3.2 2024年2月9日
0.3.1 2023年10月17日
0.3.0 2023年6月5日
0.1.0 2022年11月4日

#36 in 可视化

Download history 715/week @ 2024-04-15 796/week @ 2024-04-22 839/week @ 2024-04-29 811/week @ 2024-05-06 611/week @ 2024-05-13 997/week @ 2024-05-20 801/week @ 2024-05-27 877/week @ 2024-06-03 1415/week @ 2024-06-10 2415/week @ 2024-06-17 2331/week @ 2024-06-24 1646/week @ 2024-07-01 3289/week @ 2024-07-08 3758/week @ 2024-07-15 4313/week @ 2024-07-22 4139/week @ 2024-07-29

15,643 每月下载量
用于 19 个crate(13个直接使用)

MIT/Apache

120KB
2.5K SLoC

Allocative

这个crate实现了一个轻量级的内存分析器,它允许对象遍历和大小内省。

实现Allocative trait的对象是可内省的,这个crate提供了两个工具来处理这样的对象

Allocative的开销

当使用allocative时,二进制文件大小略有增加,这是由于Allocative trait的实现,但如果不使用它,则没有运行时/内存开销。

它与其他调用栈malloc分析器(如jemalloc堆分析器)有何不同

Allocative不是调用栈malloc分析器的替代品,它提供了对内存使用不同视角。

以下是allocative与调用栈malloc分析器之间的一些不同之处

  • Allocative需要为需要测量的每个类型实现Allocative trait,并在程序中进行一些设置以启用它
  • Allocative火焰图按对象树显示对象,而不是按调用栈显示
  • Allocative显示分配内存中的间隙,例如集合的剩余容量或结构体或枚举中的过大填充
  • Allocative允许分析非malloc分配(例如,在bumpalo内部)
  • Allocative 允许对进程数据的子集进行内存分析(例如,测量序列化前的 RPC 响应大小)

依赖项

~0.3–8.5MB
~63K SLoC