プログラムはC++
onX86_64 Linux 2.6.32.12
で書かれており、2 つのケースがあり、1 つのケースでは、挿入されたファイルごとに 1 つのファイルが生成され、 を介して送信されUDP(Version A)
ます。別のケースではファイルが生成されず、注入されたファイルを直接 経由で送信しますUDP(Version B)
。
===============VersionA統計グラフ========================== http://i .stack.imgur.com/8bxI5.png
================VersionB Statictic Graphic=========================== http:// i.stack.imgur.com/wEnKc.png
これら 2 つのケースを使用してvalgrind
確認しましたが、レポートは同じで、メモリ リークは見られません。これは、Linux カーネルのメモリ マッピングが原因ですか? テスト マシンには64G
メモリがあります。これmemory leak
ですか?
更新情報:
では、元のファイルの内容を別のアプリケーションに送信し、処理結果を受け取って必要なファイルを生成するために使用しますVersion A
。UNIX socket
図が示すように、物理メモリが増加します。私は別のケースを試しました.Unixソケットを介してファイルを送信せず、system
関数を使用し、別のアプリケーションを呼び出して必要なファイルを生成しました.メモリが増加しないことが示されています. 新しく生成されたファイルは問題ではないようです。Unix ソケットが原因です。私たちはソケットプールを使用し、私は使用lsof
します。余分なソケットは開かれていません。Unix socket
メモリを占有しますか?