- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>障害発生時の分析]]
* 目次 [#gdff4077]
#contents
*概要 [#k36a00a2]
良くあるメモリ・リークの事例と、関連する基礎用語・知識
*メモリ・リークでのメモリ不足 [#a1b7ab62]
プログラム上の問題。
**設計上の問題 [#mf17f595]
-大量データをキャッシュ
-不要なデータ(列など)を取得
-大量の結果セットを取得(SELECT文)
-巨大なDLL、Assembly(本来分割すべきもの)
**実装上の問題 [#lf1a7755]
***不要なオブジェクトのコピー [#s7b05e8b]
そもそも処理に不要なメモリを無駄に確保している状態。
***メモリ・オブジェクトの開放漏れ [#v1646bd3]
不要になったメモリを無駄に確保し続けている状態。
-リソースリーク、ハンドルリーク
--メモリ以外のリソースリーク。
--ハンドルのリークという形で確認できる。
--スレッドのリークはスタック(メモリ)のリークにも繋がる。
-メモリ・リーク
--[[VC++のメモリ・リーク]]
--[[.NETのメモリ・リーク]]
--[[COMのメモリ・リーク]]
**[[ヒープ]]の断片化 [#vc5a87bc]
設計上の問題でもあり、実装上の問題でもある(ヒープ・マネージャに任せた結果)。
仮想アドレス空間のブロックのサイズの大小が影響して、[[ヒープ]]の断片化が問題になる。~
断片化により、実際にコミットできるのは仮想アドレス空間の半分程度になることもある。
**参考 [#v97c374d]
-TechNet Blogs > Ask CORE > All Tags > リソース不足 - 第 1-3 回~
http://blogs.technet.com/b/askcorejp/archive/tags/_ea30bd30fc30b9300d4eb38d_/
*メモリ・リーク以外でのメモリ不足 [#qab690cc]
システム上の問題。
**ページ プールと非ページ プールの[[トリミング>物理メモリ管理#y6b8caa9]]が間に合わない。 [#a2c9b3b7]
利用率80%を超えてから開始される[[トリミング>物理メモリ管理#y6b8caa9]]が、大量の一時オブジェクトの作成に間に合わない事がある。
**[[トリミング>物理メモリ管理#y6b8caa9]]が間に合わない。 [#a2c9b3b7]
利用率80%を超えてから開始されるページ プールと非ページ プールの~
[[トリミング>物理メモリ管理#y6b8caa9]]が、大量の一時オブジェクトの作成に間に合わない事がある。
-サーバーがシステム ページ プールからメモリを割り当てることができない~
http://support.microsoft.com/kb/312362/ja
**ディスクへの書き込みが間に合わない。 [#l8957d43]
-遅延書き込みキャッシュが影響してメモリ不足が発生することがある。
-約 500 MB の よりも大きいファイルをコピーする場合、~
全体的なシステム パフォーマンスが低下が発生する可能性があります。~
Windows Server 2003 SP1 または Windows Server 2003 sp2 ~
http://support.microsoft.com/kb/920739/ja
**irpstacksize拡張の判断基準 [#i7146232]
-IO要求はIRPとIRPスタックというデータ構造で受け渡される。
-IRPスタックのサイズが不足してデバイスが使用できなくなることがある。
-ウイルス対策ソフトウェアが原因でイベント ID 2011 が発生することがある~
http://support.microsoft.com/kb/177078/ja
**カーネル メモリ スペース縮小の影響 [#n4dab178]
-32bitOSにて3GBスイッチを適用することで、カーネル メモリ スペースが2GBから1GBに縮小される影響。
-また、32bitOSに多くの物理メモリを搭載すると物理メモリと仮想メモリのマップ情報を管理する
カーネル メモリ スペース(PTE)が圧迫される。
-Windows Server 2003、Windows XP、および Windows 2000で発生するエラー メッセージ~
STOP 0x0000003F および STOP 0x000000D8をトラブルシューティングする方法~
http://support.microsoft.com/kb/256004/ja
**Large Pageの影響 [#h3c5826b]
Large Pageの確保の[[トリミング>物理メモリ管理#y6b8caa9]]が完了するまでシステムが応答しなくなる。
**ESENTキャッシュの影響(ドメインコントローラ) [#s882d833]
ESENTキャッシュがlsass.exeのメモリリークの原因となっている事がある。
*参考 [#xe3d0f64]
-Windows アプリケーションにおけるメモリ リークの防止~
https://msdn.microsoft.com/ja-jp/library/dd744766.aspx
**メモリ・リーク [#d7f7d7da]
***[[VC++のメモリ・リーク]] [#l0a3d324]
***[[.NETのメモリ・リーク]] [#z3703808]
***[[COMのメモリ・リーク]] [#e4a4a104]
***[[WWWブラウザのメモリ・リーク]] [#g8f4322c]
**[[障害対応に使用するツールの一覧]] [#te9ee8dd]
***[[WinDbg]] [#ld236600]
***[[UMDH]] [#c541d5b0]
**[[メモリ管理]] [#ocf9d7f9]
***[[物理メモリ管理]] [#w4fc322d]
***[[仮想メモリ管理]] [#d7d07d77]
***[[ヒープ]] [#r02b9b4d]
----
Tags: [[:Windows]], [[:メモリ管理]], [[:障害対応]], [[:性能]], [[:デバッグ]]