C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 54 を表示中)
■30316 / )  Re[3]: C++/CLIでメモリ解放が遅い
□投稿者/ Azulean (247回)-(2008/12/21(Sun) 00:05:21)
> GC.Collect()すると、ガベージコレクトされる対象となり、ある程度メモリが溜まったら解放されるという認識でいます。
GC.Collectはガベージコレクションを強制的に実行するメソッドです。
ガベージコレクションの対象を指定だけしたり、検出だけさせるものではありません。

> Singletonパターンを利用したログ出力機構です。
サンプルはSingletonっぽくないような気がしましたが…大丈夫かな?

> 下記のようにして、DisposeにもGCにも対応可能にしています。
> なお、後始末関係も二重の後始末が起きないようにケアしてあります。
そのメモリ解放ができていないときはファイナライザ(!で始まる方)で解放しているとかありませんか?
すぐにアンマネージリソースを解放したい場合は、例外が起きてもDispose(デストラクタ、~で始まる方)が走るようにちゃんとロジックを組むべきです。

# サンプルではその部分が確認できなかったため、本番のコードではちゃんとできているのであれば良いのですが...

> メモリ使用量はSystem.Diagnostics.Process.GetCurrentProcess().PagedMemorySize64でチェックしています。
「メモリ使用量」の定義次第ですが、恐らく、PagedMemorySize64プロパティじゃカバーし切れていないのではないかと思います。



今回の原因がどうであれ、繰り返しの多くなるループの中ではnew(gcnew)を避けた方が無難です。
返信 編集キー/


管理者用

- Child Tree -