0

目前我分析了一个 C++ 应用程序及其内存消耗。在某个函数调用之前和之后检查进程的内存消耗是可能的。但是,出于技术原因或为了提高效率,操作系统(Linux)似乎不仅分配了所需的字节数,而且总是分配更多的字节数,这些字节可以稍后由应用程序使用。这使得分析应用程序的内存行为变得困难。

有解决方法吗?可以将 Linux 切换到只分配所需字节数/页数的模式吗?

4

2 回答 2

1

如果您使用 malloc/new,分配器将始终分配比您请求的字节多一点的字节,因为它需要一些空间来进行内部管理,而且它可能需要对齐页面边界上的字节。分配的补充字节数量取决于实现。您可以考虑使用 gperftools (google) 等工具来监控所使用的内存。

于 2013-08-26T14:22:31.207 回答
0

几年前我想检查内存韭菜的过程。

我所做的如下:我编写了一个非常小的调试器(它比听起来更容易),它只是为 malloc()、free()、mmap() 和类似的函数设置断点(我在 Windows 下这样做了)但在 Linux 下它更简单——我在 Linux 中这样做是为了另一个目的!)。

每当到达断点时,我都会记录函数参数并继续执行程序...

通过处理日志文件(半自动),我可以发现内存泄漏。

缺点:无法同时使用另一个调试器来调试程序。

于 2013-08-26T15:59:40.967 回答