【发布时间】:2013-08-29 01:15:47
【问题描述】:
目前我分析了一个 C++ 应用程序及其内存消耗。在某个函数调用之前和之后检查进程的内存消耗是可能的。但是,出于技术原因或为了提高效率,操作系统(Linux)似乎不仅分配了所需的字节数,而且总是分配更多的字节数,这些字节可以稍后由应用程序使用。这使得分析应用程序的内存行为变得困难。
有解决方法吗?可以将 Linux 切换到只分配所需字节数/页数的模式吗?
【问题讨论】:
-
您测量了哪些内存使用情况(例如堆或堆栈),以及如何测量?你用
valgrind了吗? -
我测量了进程的虚拟大小。 Valgrind 有一组有限的数字舍入模式,因此我的应用程序无法在 Valgrind 下运行。
-
显示一些源代码并解释更多关于您的应用程序的信息。
valgrind是一个非常值得信赖的工具,所以如果你的应用程序无法使用它运行,很可能是你的错...... -
@Basile Starynkevitch:这是 Valgrind 的限制。我的应用程序使用多精度算术。操作需要在真实 CPU 上存在但在 Valgrind 中未实现的舍入模式。