我有一个C ++服务接收一些事件,这些事件在被处理后被写入文件,直到那时消息在内存中,因此我有一个存储事件的大数据结构。
一旦完成写入,我会对存储内存的所有结构进行清理,但即便如此,内存也不会下降。我有所有共享指针,所以最终那些应该是清理一段时间,即使我错过了什么,但即使这样也没有发生。
我在服务上运行了valgrind,但它没有显示任何内存泄漏。 我想检查是否有某种方法可以检查内存是否被占用?
答案 0 :(得分:1)
这是正常的。使内存自由几乎总是纯粹的效率损失,现代系统避免它。
如果其他东西不需要内存,那么释放它的努力显然是浪费。如果其他东西需要它,它仍然被浪费,因为操作系统只需要再次使用它,撤消它使其免费的工作。
现代系统直接将内存从一个用户转移到另一个用户而不会在中间自由,除非他们别无选择。