web-dev-qa-db-ja.com

Windows 7でメモリキャッシュの積極性を低下させるにはどうすればよいですか?

最近、マシンのWindows 7がメモリ不足について不満を言っているため、一部のプログラムを閉じる必要があることを指摘しました。次に、通常、メモリリークがあり、非常に大きくなった実行中のプログラムを指摘します。ただし、通常これらのプログラムは20MBのRAM使用量で始まり、プログラムを12〜24時間実行した後にのみ、最大で200MBのRAM =使用状況:これらのプログラムを3つ以上同時に実行することはないため、実行中のプログラムから600MBのRAM使用状況の最大値を確認したことがあります。

4GBのRAMを搭載したマシンでWindows 7 x64を実行しています。最初は実際にこれを忘れて、Windowsが不平を言ったときにプログラムを再起動するだけでしたが、Windowsが600MBのRAM(含める場合でも2GB未満)を使用して私について不平を言っているという事実を思い出しましたOS自体が使用するメモリ)は奇妙に思えたので、システムプロセスウィンドウをプルアップして、リストされているプロセスとシステムプロセスの合計メモリ使用量を確認しました。合計は700MBを超えたので、それでも混乱しました。 [リソースモニター]に移動して[メモリ]タブを開きました。そこで答えが見つかると思います。実際にはRAMの33%しか使用していないことがわかりました。ただし、[物理メモリ]リソース割り当てバーでは、[変更]セクションは2.3GB、スタンバイセクションは最大540MB、空きセクションは20MB未満、キャッシュメモリは2.8GB、使用可能メモリは550MBでした(もちろん、これらの値は少し丸められています。これを書いてください。)

つまり、Windows 7は私よりも多くのメモリを使用しているようです。過去のある時点で、インストール済みのWindowsサービスメニューにいくつかの変更を加えましたが、メディア共有、Telnetクライアントの有効化、インターネットの削除はしたくなかったため、特定のホスティングサービスを無効にするためだけでしたエクスプローラー、それは私のせいかもしれません。 Windowsがこれを行わないようにする方法、または少なくともキャッシュの積極性を大幅に低下させる方法があるため、これらの「メモリ不足」の通知を停止しますか?

16
grg-n-sox

スタンバイメモリは問題ではなく、「空き」と見なされ、要求に応じて再割り当てされます。これには、プログラムによって最近使用されたメモリが含まれていますが、現在は解放されています。別のプログラムが「空き」よりも多くのメモリを要求した場合、システムはスタンバイセットからシームレスに割り当てる必要があります(「スタンバイ」メモリは現時点では実際には使用されていないため)。

簡単に再割り当てできないため、過剰なModifiedメモリが問題になります。 こちら を参照してください。これは、メモリリーク(最初の段落に対応しているようです-どのプログラムがリークしているか)またはページファイルが小さすぎる(ページファイルが固定サイズであるか、非アクティブ化されていますか?)が原因である可能性があります。

10
DMA57361

SuperFetchプリエンプティブキャッシングは問題ではありません。 Windows 7は、次に必要になると思われるものを事前にキャッシュするために、できるだけ多くのスペアメモリを使用します。うまくいけば、少し時間を節約でき、アプリケーションはより高速で応答性が高くなります。

推測が間違っていて、他のデータが必要な場合、Superfetchはメモリの一部を解放して、本当に必要なデータをロードできるようにします。参照: http://arstechnica.com/Microsoft/news/2010/02/behind-the-windows-7-memory-usage-scaremongering.ars

「メモリ不足」の問題が発生している場合、SuperFetchが原因ではありません。アプリケーションが要求した場合、必要なだけメモリを放棄するためです。利用可能なメモリ(550MB)はスーパーフェッチで使用されているメモリなので、明らかにメモリ不足にはなりません。すべてのRAMを使い果たした場合でも、マシンは仮想メモリにフォールバックしますが、パフォーマンスヒットのためにこれを回避する必要があります...

したがって、「メモリ不足」の問題は他の場所の問題が原因であると考えられます-おそらく、リークしているアプリの1つが他のタイプのリソースを消費している(そして放棄していない)...

どちらの方法でも、SuperFetchをいじるよりも、バグのあるアプリケーションに取り組むことで解決策が見つかる可能性が高くなります...

4
CJM

メモリリークのあるプログラムが原因で問題が発生しているとは思わないので、ページファイルのサイズを大きくすることもできます。

ページファイルはメインメモリではありませんが、オペレーティングシステムがより多くのデータをハードドライブにスワップできるようにし、うまくいけば「メモリ不足」メッセージを停止します。他の唯一のオプションは、13 GBの巨大なフットプリントを持つプロセスに関連付けられたプログラムを削除することですが、ハイエンドのPCゲームまたは3Dレンダリングソフトウェアでない限り、どのプログラムがそれほど多くのメモリをページングする必要があるかはわかりません。

0
Britton

私の経験から、スタンバイメモリクリープは実際の問題です。たとえば、長い記事に対してローリングウィンドウモードでSnagitを実行すると、スタンバイメモリのみで実行しているときにキャプチャされなかった記事の一部が表示されます。いずれにせよ、私のコンピューターはスタンバイメモリで動作が遅いことがわかりました。

この問題を解決するには、無料のGlaryユーティリティからメモリオプティマイザーを使用します。私のコンピュータには6 GIGのメモリがあります。最初に起動したとき、Windowsのリソースモニターによると、約2 GIGの使用中メモリ、2 GIGのスタンバイ、および2 GIGの空きメモリと呼ばれるものがあります。半日ほどで、コンピュータを使用しているかどうかに関係なく、すべてのFree-Freeメモリがスタンバイメモリに変わります。これで、Glary UtilitiesのメモリオプティマイザがWindowsで起動し、2 GIGのFree-Freeメモリを利用できる状態でコンピュータを無期限に実行し続けることができます。

別のセッションに座るたびに、まずメモリオプティマイザートレイアイコンをダブルクリックして最適化を行います。オリジナルの2 GIGのFree-Freeメモリを解放するように要求します。私はもっ​​と頼むことができますが、それは関係なくそれが解放される最大です。オプティマイザーが完了するまでに約30秒かかります。これは、再起動に必要な時間よりもはるかに短い時間です。自動最適化モードがありますが、それを機能させる方法を理解することができませんでした。

0
James Horner