小编Joh*_*ohn的帖子

如何跟踪重复分配中的生命周期堆使用情况

我有一个程序在其整个生命周期中使用的内存总量比我预期的要多得多,我想看看是否有什么我可以做的。

我使用 Valgrind 的 memcheck 工具来消除内存泄漏,并使用 Valgrind 的 massif 工具查看堆快照。massif 可以告诉我哪些行负责特定时间点的最大堆块。由于 massif 没有显示任何非常大的内容,我怀疑我的问题是多次进行较小分配的特定行。

如果一些数字会有所帮助:程序运行大约 5 秒,进行密集的数值计算。峰值内存使用量为 1MB。终身内存使用量为 10GB。最大的单次分配是 250KB,并进行了 8 次。

因此,我希望看到的不是哪些行在任何特定时间点分配了大量内存,而是在程序的整个生命周期内为每一行分配的总和。我觉得 Valgrind 应该可以访问这些信息,因为它正在跟踪每个分配,但我不知道如何让它告诉我。

任何人都可以建议如何使用 Valgrind 来报告这些信息,或者其他可以做我想做的工具吗?

debugging optimization fortran valgrind heap-memory

3
推荐指数
1
解决办法
87
查看次数

标签 统计

debugging ×1

fortran ×1

heap-memory ×1

optimization ×1

valgrind ×1