- 追加された行はこの色です。
- 削除された行はこの色です。
Open棟梁Project - マイクロソフト系技術情報 Wiki
* 目次 [#gdff4077]
#contents
*概要 [#k36a00a2]
メモリ・リークの事例と、関連する基礎用語・知識
*良くあるメモリ・リークの事例 [#q537b4dd]
**メモリ・ヒープの断片化 [#vc5a87bc]
仮想アドレス空間のブロックのサイズの大小が影響して、断片化が問題になる。~
このため実際にコミットできるのは仮想アドレス空間の半分程度になることもある。
***設計上の問題 [#mf17f595]
-大量データをキャッシュ
-不要なデータ(列など)を取得
-大量の結果セットを取得(SELECT文)
-巨大なDLL、Assembly(本来分割すべきもの)
***実装上の問題 [#lf1a7755]
-不要なオブジェクトのコピー
-メモリ・オブジェクトの開放漏れ
--リソースリーク、ハンドルリーク~
メモリ以外のリソースリーク。ハンドルのリークという形で確認できる。
スレッドのリークはスタック(メモリ)のリークにも繋がる。
--メモリリーク
---VC++~
メモリ:malloc、free(など、詳しくは後述)~
オブジェクト:new、delete~
ハンドラ:open、close~
---.NET
マネージ・リソースであれば、GCで適切に解放される。~
このため、マネージ・オブジェクトでリークするものは、関数スタックに積まれる~
ローカル変数以外に保持されたマネージ・オブジェクトである可能性が高い。~
~
.NETアプリを軽快にするためのガベージ・コレクション講座 - @IT~
http://www.atmarkit.co.jp/fdotnet/directxworld/directxworld06/directxworld06_01.html