0

重複の可能性:
プライベート バイト、仮想バイト、ワーキング セットとは何ですか?

私はプロジェクトを読んでいて、プログラマーはこのコードを書いてプログラムメモリをチェックしています

if ((Process.GetCurrentProcess().WorkingSet64 + Process.GetCurrentProcess().PagedMemorySize64) > (long)2048* (long)1024 * (long)1024)
                {

                    Program.Log("memory is over 2G! ----- !closed!" );

                    Restart();
                }

プログラマーが PagedMemorySize64 と WorkingSet64 を追加して現在のメモリ サイズを計算する理由を知りたいですか。

WorkingSet64 では十分ではありませんか?

それは本当ですか?

4

1 に答える 1

-1

彼は、アプリケーションによって使用される合計メモリが、ディスクに「ページアウト」されたメモリ(物理メモリを使用しない)と、現在の「ワーキングセット」の組み合わせであると信じていたためです。アプリで使用されます。

つまり、WorkingSet64(phys mem)+ PagedMemorySize64(ディスクにページングされたmem)=割り当てられたmemの合計

これはすぐに複雑になり、「私はどれだけのメモリを取っているのか」という質問に対する本当の答えは1つもないことがわかります。また、これらのプロパティに関する.Netドキュメントがあまり良くないことも助けにはならず、例はこれらが何を意味するのかを知るのにあまり役立ちません。

それを知りたい場合は、ページファイル、共有DLL、Windowsメモリページ、Windowsヒープなど、Windowsのメモリ管理とその仕組みについて読む必要があるかもしれません。たとえば、アプリは仮想メモリアドレス空間にヒープを割り当てることはできますが、そのヒープ内のページを実メモリへのマッピングにコミットすることはできません。誰かが尋ねるかもしれませんが、私は2つのうちどちらについて知りたいですか?

于 2013-01-02T08:22:50.520 に答える