【发布时间】:2012-02-13 16:51:36
【问题描述】:
我正在创建一个小型缓存守护程序,并且我想将其内存使用限制在大约一个指定的量。但是,尝试计算正在使用的内存量似乎存在问题。
每次创建 CacheEntry 对象时,都会将 CacheEntry 对象的大小(显然是 64 字节)加上内部数组中使用的字节数添加到计数器中,以了解正在使用的字节数.当 CacheEntry 对象被删除时,它会减去该数量。我可以确认数学至少是正确的。
但是,当在 NetBeans 中运行时,内存分析器报告大量不同的数字。具体来说,大约是两倍高。这不是内存泄漏,它与 当前 存在的 CacheEntry 对象的数量特别相关。增加存储在内部数组中的数据量实际上使数字更接近(如果计算不正确,则相反,相距更远);由此,我得出结论,在内存中拥有一个 CacheEntry 对象的开销几乎是 sizeof() 报告的两倍。它不会逐步上升或“块”上升。
是否有一些常见的原因导致这种情况发生?
更新:为了检查,我在没有配置分析器的情况下运行了我的测试。无论哪种方式,Linux 都会报告相同的 VmHWM/VmRSS,因此内存分析器肯定不会影响计算。
【问题讨论】:
标签: c++ memory-management