.NET Framework

.NET ガベージ コレクタは、メモリの効率的な使用を実現し、長期的な断片化を解消する、高速なメモリ割り当てサービスを提供します。

メモリの解放忘れは典型的なバグの要因であり、メモリ解放を自動化することによって、プログラムの信頼性は向上し、プログラマーの負担も減る。自動的なメモリ解放を行う機構は、ガベージ・コレクタと呼ばれ、解放する行為をガベージ・コレクションと呼びます。

ガベージ コレクタは、メモリ内定義されているオブジェクトの有効期間の相対値から、ジェネレーション単位で管理しています。GC.MaxGeneration プロパティで確認できます。一番最新生成されたジェネレーションの番号は0、一番古いジェネレーションは GC.MaxGeneration パロパティで確認する。

古いジェネレーションのオブジェクトは、今後も使われる可能性があるから、一般的にメモリの開放は下記のように、一番最新のジェネレーションのオブジェクトの解放をします。

 GC.Collect(0);

ある処理を最速で実行したい場合など、処理中にガベージ・コレクションが発生しないよう、処理の開始前にガベージ・コレクションを行っておきたいこともあるだろう。

85,000byte以上のオブジェクトは常にジェネレーション2に置かれ、ジェネレーション増加の対象にならないとされている。これは、サイズの大きなオブジェクトの管理はコストが大きく、頻繁に回収してしまうとパフォーマンスに悪影響を与えるためです。

.NETのアプリケーションを最大のパフォーマンスを得るため、以下のことを留意して、プログラミングしてください。

  • データ構造が使用するメモリは、できるだけ同時に割り当てる。
  • できるだけ一時的なオブジェクトを作成しない。
  • オブジェクトポインタ(特に古いオブジェクト)への書き込み回数をできるだけ減らす。
  • データ構造のポインタの密度を減らす。
  • ファイナライザ(デストラクタ)はできるだけ使用しないようにする。
  • 使用している一時領域のサイズに十分注意して、割り当てるオブジェクトをできるだけ少なくする。
  • 存続期間が比較的長いオブジェクトのサイズを最小限に保つ。
  • スタック上のオブジェクト ポインタの数をできるだけ少なくする。


中古車買取実績No.1ガリバー

コメント:



(画像の文字列を入力して下さい)

トップ   編集 凍結 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019/12/02 (月) 12:32:07 (1628d)

PCpዾyǗlgĂ܂}WŔ܂z 萔O~ył񂫁z Yahoo yV NTT-X Store

z[y[W ̃NWbgJ[h COiq ӂ邳Ɣ[ COsیI COze