LinuxとC++を初めて使用し、アプリケーションのメモリ使用量について質問があります。
私のアプリケーションは、1秒あたり約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分ごとに2倍になるようです。これは正常なことですか、アプリケーションは実際にその量のメモリを使用しますか?ここで何かが足りませんか?
ありがとう。