2

C++/CLI と .Net 4.0 (マネージド c++) を使用しています。IDE は Visual Studio 2012 RC です。

私のプログラムはほぼ完全に C++/CLI で書かれており (5 行のネイティブ コードしかありません)、ガベージ コレクションがどれほど効果的で、本当に機能しているかどうか疑問に思っています。

プログラムを開始すると (いくつかのフォームを使用しています)、約 3 ~ 5 MB の RAM が必要です。しかし、プログラムがしばらく実行されると (新しい情報が入力された同じコードが何度も実行されます)、ますます多くのメモリが使用されます (5 ~ 15 分後には約 10 ~ 25 MB の RAM が必要になります)。 RAMの量が増えるだけですか?

どうしてこれなの?そして、これはまさにガベージ コレクションが防止すべきことではないでしょうか?!

そして、ガベージ コレクションを 1 分ごとに強制するのは良くないでしょうか?

4

1 に答える 1

6

どうしてこれなの?そして、これはまさにガベージ コレクションが防止すべきことではないでしょうか?!

ガベージ コレクタは (必ずしも) 常に実行されるわけではありません。必要に応じて実行され、メモリ不足がなければ頻繁に実行されない傾向があります。システムに多くの空きメモリがある場合、GC は常に頻繁に実行されるとは限らないため、メモリの増加を確認できます。これは問題ではありません。「未使用」のメモリを使用しても問題はありません。ただし、システムがメモリ不足の状況に陥った場合にクリーンアップされるのであれば、問題はありません。

ただし、ガベージ コレクターは引き続き機能します。信頼できるかどうか心配する必要はありません。純粋なマネージ コードでメモリ リークが発生することはありませんが、予想よりも多くのメモリを使用する場合があります。

于 2012-08-13T16:17:53.663 に答える