我是Linux和C++的新手,有一个关于应用程序内存使用的问题。
我的应用程序处理大量实时数据,每秒约500条消息。
我使用std::map来管理(即插入和删除)所有消息。例如:
std::map<int, data_struct> m_map;
// when receive a new message, convert the message into a data structure
m_map.insert(std::pair<int, data_struct>(message.id, data));
// when need to erase a message
iter = m_map.find(id);
if (iter != m_map.end()) {
m.map.erase(iter);
}
m_map的大小大约为2500,即应用程序在开始时会收到很多新消息,然后逐渐需要删除这些消息。大约10秒钟后,收到的新消息数量与需要删除的消息数量相同。
我的问题是,大约20分钟后,在Linux系统监视器中,我注意到我的应用程序使用的内存约为1GB。似乎每20分钟内存大小翻倍。这正常吗?应用程序真的使用那么多内存吗?我错过了什么吗?
谢谢。
map.erase(id)
。有一个版本的 erase 函数可以通过键作为参数来删除元素,并返回被删除的元素数量。 - Corbin