Windows 7でメモリリークの原因を見つける方法は?


10

RAMが少なくなり続けるWindows 7マシンを持っています。マシンが応答しなくなるまで、数時間にわたって空きRAMが減少しているのがわかります。プロセスリストを確認しましたが、どれもそれほど多くのRAMを使用しません。

プロセスごとのハンドル数やその他のさまざまなインジケーターも確認しましたが、マシンでRAMが不足する理由がまだわかりません。

Windowsでメモリがどのように使用されているかを確認する良い方法はありますか?

編集する

tasklistマシンが応答しなくなる数分前の結果は次のとおりです。

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0         24 K
System                           4 Services                   0        300 K
smss.exe                       196 Services                   0      1,024 K
csrss.exe                      272 Services                   0      4,336 K
wininit.exe                    320 Services                   0      4,184 K
csrss.exe                      332 Console                    1      3,516 K
winlogon.exe                   372 Console                    1      6,316 K
services.exe                   416 Services                   0      8,112 K
lsass.exe                      432 Services                   0     10,088 K
lsm.exe                        440 Services                   0      3,664 K
svchost.exe                    548 Services                   0      8,152 K
svchost.exe                    620 Services                   0      6,564 K
svchost.exe                    660 Services                   0     15,764 K
LogonUI.exe                    724 Console                    1     18,428 K
svchost.exe                    768 Services                   0      7,992 K
svchost.exe                    828 Services                   0      9,724 K
svchost.exe                    852 Services                   0     28,092 K
svchost.exe                    176 Services                   0     13,096 K
spoolsv.exe                    824 Services                   0     10,608 K
svchost.exe                    952 Services                   0     11,632 K
svchost.exe                   1076 Services                   0      8,524 K
fshoster32.exe                1120 Services                   0      9,148 K
fsorsp.exe                    1200 Services                   0      8,036 K
fsgk32.exe                    1324 Services                   0      3,084 K
cygrunsrv.exe                 1552 Services                   0      5,852 K
conhost.exe                   1864 Services                   0      2,996 K
sshd.exe                      1896 Services                   0      7,804 K
FSMA32.EXE                    2024 Services                   0      1,628 K
svchost.exe                   1320 Services                   0      5,092 K
fssm32.exe                    1704 Services                   0      2,196 K
FSHDLL64.EXE                  2120 Services                   0        644 K
SearchIndexer.exe             3260 Services                   0     13,596 K
sshd.exe                    138920 Services                   0      8,696 K
sshd.exe                    138448 Services                   0      8,696 K
sshd.exe                    138660 Services                   0      8,696 K
bash.exe                    137924 Services                   0      5,380 K
bash.exe                    137820 Services                   0      3,832 K
SAV32CLI.EXE                136344 Services                   0    133,868 K
WmiPrvSE.exe                139444 Services                   0      7,168 K
sshd.exe                    139672 Services                   0      8,692 K
sshd.exe                    139876 Services                   0      8,684 K
bash.exe                    139992 Services                   0      5,432 K
bash.exe                    140040 Services                   0      3,996 K
bash.exe                    140200 Services                   0      5,400 K
bash.exe                    139424 Services                   0      4,048 K
typeperf.exe                139300 Services                   0      5,372 K
sleep.exe                   138268 Services                   0      2,272 K
sshd.exe                    139612 Services                   0      7,168 K
sshd.exe                    137720 Services                   0      5,700 K
bash.exe                    139524 Services                   0      5,304 K
bash.exe                    138952 Services                   0      3,756 K
tasklist.exe                137580 Services                   0      5,164 K
bash.exe                    139460 Services                   0      5,452 K
bash.exe                    139796 Services                   0        104 K

その時点で、wmic OS get FreePhysicalMemory /Value2GBのうち約400MBの空きメモリが報告されます。

RamMap:

ここに画像の説明を入力してください

タスクマネージャー:

ここに画像の説明を入力してください


1
コンピューターを再起動して、タスクマネージャープロセスのスクリーンショットを投稿できますか?そして、必ずすべてのユーザーからのプロセスを表示してください。あなたは、再起動後より50〜60よりも持っているなら、あなたができることは間違いありますが、何もルックスが、その後うさんくさい場合、物事はトリッキー得ることができます。..
MonkeyZeus

1
仮想メモリまたは物理メモリが不足していますか?解決策と原因は異なります。仮想メモリ不足の警告は、物理メモリが不足している構成の問題であり、多くのプロセスを実行する必要があります。
ラムハウンド2014年

1
原因がメモリリークであるという証拠はありますか?それはメモリリークではないという十分な証拠があるようです。(それは逮捕されたドライバーかもしれないが、私は推測します。)
David Schwartz

フィードバックをお寄せいただきありがとうございます。投稿にいくつかの情報、特にタスクリストを追加しました。時間の経過とともに低下し続けるのは、空き物理メモリです。使い方を確認できますか?
ローレント2014年

1
RAMMApのスクリーンショットを投稿する:technet.microsoft.com/en-us/sysinternals/ff700229.aspx
magicandre1981

回答:


8

メモリ使用量が多いのは、ページテーブルの使用率が高いためです。どのプロセスがそれを使用しているかを確認するには、Windows Performance Toolkitをインストールし、 adminとしてコマンドプロンプトを開いて、次のコマンドを実行します。

xperf -on ReferenceSet -BufferSize 1024 -MaxFile 512 -FileMode Circular  && timeout 5 && xperf -d MemUsage.etl

MemUsage.etlWindows Performance Analyzer(WPA.exe)でを開き、左側のグラフリストから分析ペインにグラフ「ResidentSet」をドラッグアンドドロップします。

ここに画像の説明を入力してください

次に、「ページカテゴリ」列を左側に移動し、「ページテーブル」エントリを展開します。

ここに画像の説明を入力してください

ここでは、ページテーブルの使用率が高いプロセスを確認できます。右側のサイト(青い線の後)に、各プロセスのページテーブルのメモリ使用量(MB単位)が表示されます。


windows8.1では、利用可能なグラフオプションとして「residentset」が表示されません。どうすれば入手できますか?別のxperf-flag?
akira

私は自分のコメントに答えます:xperfを更新します。
akira

これは、Windows 7での私のために動作しません-への最初の呼び出しXperfはができますxperf: error: NT Kernel Logger: Invalid flags. (0x3ec).
benshepherd

@benshepherd私にとってはうまくいきます。8.1 SDKの最新のWPTを使用していることを確認してください:dropbox.com/s/e5ol59a6n9g3ctb/Win7_xperf.png
magicandre1981

1
私は最終的に問題を発見しました、それはレノボ「RapidBootシールド」でした、そしてそれを取り除くことが私の問題を解決しました:superuser.com/a/850346/79763
スパロート

0

ここで私が見ることができる唯一の「奇妙な」ものはこれらです:

  • scan.exe現在98%のCPUを奪うというプロセスがあります
  • 呼び出されるプロセスfssm32.exeには、900万のページフォールトがあります。fssm32.exef-secureウイルススキャナーのプログラムのように見えます。
  • また、SAV32CLI.EXE別の130mb +のメモリを占有するというプロセスもあります。2つのウイルススキャナー(f-secureとsophos)を同時に実行すると、保護されているように感じられます。

rammap-screenshotは私にとっては問題ないように見えます:〜400mbのキャッシュされたファイルのプールがあり、そのうち85mbがアクティブに使用され、300mb +がスタンバイモードです(つまり、より多くのramが必要になるとすぐに解放されます)。sshd.exeおよびbash.exeプロセスの量を確認すると、これも合法に見えます。

ウィンドウがメモリを管理する方法の内部の仕組みを学ぶ最善の方法は、この講演です:http : //channel9.msdn.com/Events/TechEd/NorthAmerica/2011/WCL405 ..スピーカーが開発したいくつかのツールを既に使用しています。


1
Microsoftの連絡先(Microsoft Premier Field Engineers)も、Windowsでは数百MBのページテーブルが正常ではないことを教えてくれました。
magicandre1981 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.