コードにメモリリークがあります。ヒープはフローのトリガーとともに増加し続けます。私のコードには、基本的にキューで待機するwhile(1)ループがあります。そのフローがWebサービスからトリガーされると、着信メッセージがキューにプッシュされ、メッセージを受け取り、グラフ形式のフローを実装するc++のメソッドが呼び出されます。
トリガーごとに、ヒープ内で604kbのメモリが増加していることがわかります。これを解決する必要があります。
サービスを停止しました[prodで実行されているバイナリ]。
valgrindでサービスを開始しました[valgrindへの入力としてバイナリを指定しました]
valgrind --log-file=/home/valgrind-output.txt --leak-check=full <service binary>
ただし、バイナリの実行中はリークは表示されず、サービスを停止したときにのみリークが発生します。ただし、これらは1回限りのリークであり、サービスを再起動するとクリアされます。[binary]。
各フローがトリガーされるプロセスの開始時に、意図的に割り当てを追加しました。
int *p = new int[10];
ログも追加しました。フローをトリガーするたびにログが印刷されますが、valgrindが出力ファイルにリークを与えることはありません。
各フローコール間のリークを確認するにはどうすればよいですか?valgrindシューズは、メインの終わりが呼び出されたときにのみリークしますか?この場合、コードのリークの原因を動的に確認する方法。インストールする必要のある他の検出器がありますか?提案してください。それは大きな助けになるでしょう。ありがとう。