我正在开发一个定制的嵌入式 Linux 发行版,libc 是 glibc-2.22。
如何在应用程序长时间自动化运行时跟踪应用程序的内存分配/释放。glibc 中是否有挂钩会在我的应用程序中每次发生分配/释放时生成日志?
我正在开发一个定制的嵌入式 Linux 发行版,libc 是 glibc-2.22。
如何在应用程序长时间自动化运行时跟踪应用程序的内存分配/释放。glibc 中是否有挂钩会在我的应用程序中每次发生分配/释放时生成日志?
glibc 中是否有挂钩会在我的应用程序中每次发生分配/释放时生成日志?
不。写入登录每个分配将是
您的要求不是唯一的:例如,Google 运行应用程序很多天,开发人员通常想知道哪些部分消耗了多少内存(当您运行 100 个应用程序中的 100 个时,这里和那里浪费的 MB 很快就会增加)。
为此,tcmalloc 自带了heap profiler,可以回答上面的很多问题。jemalloc也是如此。
有一个带有高性能分配跟踪器的 glibc 分支:
它仍然有点粗糙,但它已在一定程度上成功用于多线程、分配密集型工作负载。