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 可视化
15,643 每月下载量
用于 19 个crate(13个直接使用)
120KB
2.5K SLoC
Allocative
这个crate实现了一个轻量级的内存分析器,它允许对象遍历和大小内省。
实现Allocative
trait的对象是可内省的,这个crate提供了两个工具来处理这样的对象
FlameGraphBuilder
用于构建对象树的火焰图size_of_unique_allocated_data
提供了估计值,表示值持有的分配内存量
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