我正在为工作编写的程序需要跟踪其自身使用的内存。但是它不能整体监控它的内存使用情况,我需要它来监控程序中的每个对象以及该对象正在使用多少内存,这样它就可以告诉该对象在使用上面的情况下减少内存使用一定的能力。监控内存使用的部分持有一个指向所有已创建对象的指针,并通过调用该对象上返回对象大小的方法来跟踪它们的内存使用情况。
我遇到的问题是我无法准确计算所用内存的大小。我的计算是否有一点偏差并不重要,但我的差异很大。我的程序计算的大小在程序实际内存使用量的 1/2 到 2/3 之间变化(取决于程序执行的操作)。例如,使用 3.35gb 内存的程序被计算为仅使用 2.16gb。
我计算对象大小的当前方法是将 sizeof(*this) 添加到对象中任何向量或数组的长度乘以向量/数组中元素的 sizeof。
我计算所用内存的方式有问题吗?还是还有其他我没有考虑到的事情?如果有人知道一个程序,您可以通过程序的不同方面分析内存使用情况,这也将非常有帮助,这样我就可以追踪所有这些额外内存的来源(最好是可以在没有 GUI 的 Linux 上运行的程序)我使用的是 Ubuntu 服务器,但也有一台我可以使用的 Windows 机器)。