2010-12-14 15 views
1

virutal memoryと物理メモリリークの違いを.netアプリケーションの観点から理解するのは難しいです。バーチャルvs物理メモリリーク

誰もがこの概念を具体的に説明することができますか?どのようにして、1つのタイプのリークだけを持つことができますか?

TIA

+0

.NETアプリケーションでの物理メモリリークについては、どこで知りましたか? –

+0

.NETアプリケーションにメモリリークがあります。このアプリケーションは、いくつかのCOM相互運用機能を提供しています。デバッグのメモリリークを探している間、私はこのコンセプトに遭遇しました。 – imak

答えて

1

仮想メモリは、その使用のために利用可能としてマークされているプロセスのアドレス空間の範囲を備えています。メモリをリークすると、ほとんどのプログラムが処理する唯一の概念であるため、仮想メモリはほとんど常に関与しています。

物理メモリは通常、プログラムが仮想メモリにアクセスする場合にのみ消費されます。そのためには、OSが一致する物理メモリを提供する必要があります。これは、OSの制御下にあるため、仮想メモリとは独立して漏洩することはめったにありません。

OTOHでは、特定の仮想メモリページを強制的に物理メモリにマップされたままにすることで、プログラムは物理メモリの割り当てをより詳細に制御できます(これはOSによって異なります)。そのような場合、バグのあるプログラムが物理メモリをリークする可能性があります。

より柔軟な物理メモリリークは、プログラムが論理的にアクセスする必要がない仮想メモリのページに触れ続ける場合です。これは、そのようなページを熱い状態に保ち、ワーキングセット(物理的にマップされたページの集合)を小さく保つためにオペレーティングシステムの努力を邪魔します。