1
Windowsタスクマネージャに表示されるアプリケーションの使用量はますます多くなり、OutOfMemoryによってクラッシュします。しかし、私がMemoryValidator(www.softwareverify.comから)を使ってリークをチェックすると、リークは検出されません。なぜこうなった?Windowsタスクマネージャは、メモリリークがなくてもプロセスメモリが増え続けることを示します。
Windowsタスクマネージャに表示されるアプリケーションの使用量はますます多くなり、OutOfMemoryによってクラッシュします。しかし、私がMemoryValidator(www.softwareverify.comから)を使ってリークをチェックすると、リークは検出されません。なぜこうなった?Windowsタスクマネージャは、メモリリークがなくてもプロセスメモリが増え続けることを示します。
メモリ使用量が増加しているという理由だけで、必ずしも「漏れ」ているわけではありません。多くのライブオブジェクトや非常に大きなオブジェクト(たくさんのデータを含む)を単純に蓄積することができます。
使用している言語とアプリケーションの詳細については、より具体的な情報を参考にしてください。
最新の情報に更新 ガベージコレクションが正しく実行されていることを確認してください。私はおそらくそれを助けるためにlibgcライブラリを提案したいと思います。
私が考えている唯一のもう一つのことは、あなたが意図せずにオブジェクトの参照を保持しているため、それらが重なっているということです。
MineはC++のトランザクションアプリケーションです。トランザクション中に多数のオブジェクトを作成し、トランザクションが終了するとそれらを削除します。だから記憶は元のものに戻ってくるはずです。しかし、タスクマネージャでは着実に増加し続けています。 –
@HUGH回答が更新されました。 –
不要になったオブジェクトを明示的に削除しているので、C++アプリケーションでガベージコレクションを行う必要はありません。私はちょうどhttp://www.codeproject.com/KB/dotnet/BestPractices5.aspx?msg=3605652&display=Mobile#Avoidtaskmanagertodectectememleleakのようなインターネット上のいくつかのページを見つけました。タスクマネージャーには、割り当てられたメモリとメモリではないことが表示されます使用中で。私は誤って私のアプリケーションがメモリを漏らしていると思っているのだろうかと思います。上記のリンクは、アプリケーションのプライベートメモリの増加を確認するためにperfmonを使用するように指示していますが、アプリケーションを「インスタンス」リストで見つけることができません。 –