我是 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 System Monitor中,我注意到我的应用程序使用的内存约为 1GB。而且它的大小似乎每 20 分钟翻一番。这是正常的吗,应用程序真的使用了那么多内存吗?我在这里错过了什么吗?
谢谢。