64 ビット Linux システムでアプリケーションを開発しています。ご覧のとおり、私のアプリはダーティー ヒープ メモリを大量に消費しています。ヒープメモリについて言えば、「汚い」とはどういう意味ですか? 何がそれを引き起こし、それを防ぐために何ができるのでしょうか?
編集
アプリケーションが実行する操作を説明した方がよいでしょう。
私のアプリケーションは 2 つのスレッドで実行されます。最初のスレッドは、別のスレッドで実行されるキューにジョブを送信します。したがって、最初のスレッドはキューに入れるページを割り当て、2 番目のスレッドはそれらをデキューし、ジョブを実行して解放します。これらの操作はすべて、スレッドセーフな方法で実行されます。
そこで私はこのことについてテストを行い、100000000 個のジョブをキューに入れ、それらすべてを実行しました。特定の瞬間まで、メモリ使用量が増加します。そして、待ち行列処理が終了し、待ち行列を外す処理だけが残った場合、メモリ使用量はなぜか減少しません。最後に、すべてのジョブがキューから取り出されて実行されると、すべてのメモリが解放されます。そのため、デキュープロセスでメモリリークが発生しているようです。終了するとすべてのメモリが解放されるためですが、コードに問題はありませんでした。
ここにコードを投稿したほうがよいことはわかっていますが、大きすぎます。しかし、私が追加したことから、これを引き起こしている可能性のあるものについて推測できる人はいますか?