Belleği önbelleğe almada Windows 7'yi nasıl daha az agresif hale getiririm?


16

Son zamanlarda, makinemdeki Windows 7'nin belleğinin tükenmesinden şikayetçi olduğunu ve bazı programları kapatmam gerektiğini belirttim. Daha sonra genellikle çalıştığım bir bellek sızıntısı olan ve oldukça büyük bir programa işaret eder. Ancak, genellikle bu programlar 20 MB RAM kullanımıyla başlar ve programı 12 ila 24 saat çalıştırdıktan sonra en fazla 200 MB RAM kullanımına kadar büyürler. Aynı anda çalışan bu programların üçünden fazlasına sahip değilim, bu yüzden çalışan programlarımda gördüğüm en fazla 600 MB RAM kullanımı.

4GB RAM içeren bir makinede Windows 7 x64 kullanıyorum. İlk başta bunu unuttum ve Windows şikayet ettiğinde programları yeniden başlatırdım, ancak şimdi hatırlıyorum, Windows'un 600MB RAM kullanarak şikayet ettiğimi (işletim sisteminin kendisi tarafından kullanılan belleği dahil etseniz bile 2GB'ın altında) tuhaf görünüyordu . Bu yüzden listelenen işlemlerimden ve sistem işlemlerimden toplam bellek kullanımına bakmak için sistem süreci penceresini açtım. 700MB'ın biraz üzerine çıktı, bu yüzden hala kafam karıştı. Sonra Kaynak Monitörüne gittim ve Bellek sekmesini açtım. Sanırım cevabımı buldum. Aslında RAM'imin sadece% 33'ünü kullandığımı belirtti. Ancak, Fiziksel Bellek kaynak ayırma çubuğunda, Değiştirilen bölüm 2.3 GB'a kadar, Bekleme bölümü 540 MB'a kadar, Boş bölüm 20 MB'ın altındaydı, Önbellek 2'de listelenmiştir. 8 GB ve Kullanılabilir hafıza 550 MB olarak listelenmiştir. (Bu değerleri yazarken elbette biraz değiştiğinden elbette biraz yuvarlanıyor.)

Görünüşe göre Windows 7 benden daha fazla bellek kullanıyor. Geçmişte bir noktada, yüklü Windows hizmetleri menüsünde bazı değişiklikler yaptım, ancak herhangi bir medya paylaşımı yapmak istemediğimden, Telnet istemcisini etkinleştirdiğim ve Internet'i kaldıramadığım için yalnızca belirli barındırma hizmetlerini devre dışı bırakmaktı Explorer, ama benim hatam olabilir. Windows'un bunu yapmamasını veya en azından daha az agresif bir şekilde önbelleğe almasını sağlamanın bir yolu var mı?


2
OP sorunu yanlış anlıyor. Desteklenen sanal bellekte azalıyor. Fiziksel hafıza ile ilgili yaptığı tüm analizler önemsizdir. Bol miktarda boş fiziksel belleğe sahip olabilirsiniz, ancak yetersiz boş yedek sanal bellek ve açılır bellek uyarısı, yedeklenen sanal belleğin fiziksel bellekte değil, kısa arzda olduğu konusunda bir uyarıdır. (Bir sürücüden fiziksel bellek sızıntısı soruna dolaylı olarak neden olabilir.)
David Schwartz

"OP sorunu yanlış anlıyor." Bazı cevaplayıcılar gibi. :(
Jamie Hanrahan

Yanıtlar:


10

Bekleme belleği bir sorun değildir, "boş" olarak kabul edilir ve istek üzerine yeniden tahsis edilir - sadece son zamanlarda programlar tarafından kullanılan belleği içerir, ancak şimdi serbest bırakılmıştır. Başka bir program "Boş" değerinden daha fazla bellek isterse, sistem Bekleme setinden kesintisiz olarak ayrılmalıdır ("bekleme" belleği şu anda gerçekten kullanılmadığından).

Aşırı Değiştirilmiş hafızanız sizin probleminizdir, çünkü kolayca yeniden tahsis edilemez. Buraya bakın . Muhtemelen bir bellek sızıntısı (ilk paragrafınıza karşılık gelen görünüyor - hangi programlar sızdırıyor?) Veya bir sayfa dosyasının çok küçük olması (sayfa dosyanızın boyutu sabit mi yoksa devre dışı mı?).


3
CJM'nin cevabı için yaptığım yorumda belirttiğim gibi, şüpheli olan (bazı indie PC oyunları) tüm uygulamalarımı kapattım ve sadece Görev Yöneticisi, Kaynak Monitörü, AVG ve Chrome şu anda çalışıyor ancak hala 1.6GB değiştirilmiş belleğe sahip. Bilgisayarımı, bağladığınız makaledeki profille eşleşen, günlerce açık bırakıyorum. Bununla birlikte, bu web sayfasındaki bir not, büyük bir taahhüt boyutuna sahip bir süreç aramaktı. Şu anda bu nSvcAppFlt.exe bir işlemdir. Yalnızca 30 MB'lık bir çalışma kümesi boyutuna, ancak 13,5 GB'lık bir taahhüt boyutuna sahiptir. Ne oluyor?
grg-n-sox

2
Hafızanızı sızdıran program bu. Ayrıca bkz. Social.answers.microsoft.com/Forums/en-US/w7performance/thread/… . Çıkarın ve her şey iyi olmalı.
akid

Çok teşekkür ederim. Aslında bu biraz şık. Temel olarak RAM'imin yenildiğini fark edersem, kaynak monitörüme gidebilir, Değiştirilmiş bellek bölümünün büyük olup olmadığını görebilir ve hangi işlemin büyük bir işlem boyutuna sahip olduğunu görebilir ve bellek sızıntı programımı bulabilir miyim? Windows için kesinlikle güzel bir teşhis aracı.
grg-n-sox

Nvidia güvenlik duvarı yazılımınızı devre dışı bırakın veya yükseltin.
David Schwartz

Son paragrafta "sizin" olması gereken üç "siz" var. (düzenleme öneremez, çok küçük.)
Shadow The Burning Wizard

4

SuperFetch önleyici önbellekleme sizin probleminiz değildir. Windows 7, daha sonra ihtiyaç duyacağınızı düşündüğü şeyleri önceden önbelleğe almak için mümkün olduğunca fazla yedek bellek kullanacaktır. Doğru yaparsa, size biraz zaman kazandırır ve uygulamalarınız daha hızlı ve daha duyarlı görünür.

Yanlış tahmin ederse ve başka verilere ihtiyacınız varsa, Superfetch gerçekten ihtiyacınız olan verileri yüklemenizi sağlamak için sahip olduğu belleğin bir kısmını serbest bırakır. Bkz. Http://arstechnica.com/microsoft/news/2010/02/behind-the-windows-7-memory-usage-scaremongering.ars

Eğer 'düşük bellek' problemleri alıyorsanız, bunun nedeni SuperFetch'den kaynaklanmayacaktır - çünkü uygulamalar talep ederse gerektiği kadar belleği bırakacaktır. Kullanılabilir hafızanız (550 MB), süper bellek tarafından kullanılan şeydir, bu yüzden açıkça hafızanız tükenmemiştir. Tüm RAM'inizi kullandığınızda bile, makineniz sanal belleğe geri dönecek, ancak performans isabeti nedeniyle bundan kaçınmak isteyeceksiniz ...

Bu nedenle, 'düşük bellek' sorunlarının başka yerlerdeki sorunlardan kaynaklandığını gösteriyor - belki de sızdıran uygulamalarınızdan biri diğer tür kaynakları tüketiyor (ve bırakmıyor) ...

Her iki durumda da, çözüm, SuperFetch ile uğraşmak yerine, buggy uygulamalarınızla mücadele ederek bulunma olasılığı daha yüksektir ...


Belleğin Bekleme bölümünün önbelleğe alınmış belleğin bir parçası olduğunu anlıyorum, ancak sorunun programım olduğundan şüpheliyim. Şimdi hepsini kapattım, böylece tek yaptığım AVG, Görev Yöneticisi, Kaynak Monitörü ve 4 sekmeli tek bir Chrome penceresi. Sadece 1417MB Kullanılabilir bellekle 1042MB kullanılabilir, ancak hala Görev Yöneticisi'nin kullanılan bellek olarak saydığı ve bana düşük bellek bildirimleri verdiği 1633MB alan büyük bir Modifiye bellek yığınına sahibim. Değiştirilmiş bellek miktarını azaltmanın veya düşük bellek bildirimini kapatmanın bir yolu var mı?
grg-n-sox

0

Sorunun bellek sızıntısı olan bir programdan kaynaklandığını düşünmediğiniz için alternatif, sayfa dosya boyutunuzu arttırmak olacaktır.

Sayfa dosyası ana belleğiniz olmasa da, işletim sisteminin sabit sürücüye daha fazla veri aktarmasına izin verir ve umarım "bellek yetersiz" mesajını durdurur. Diğer tek seçenek, 13GB'lik büyük bir baskıya sahip olan işlemle ilişkili programı kaldırmaktır, ancak bazı üst düzey PC oyunu veya 3D render yazılımı olmadıkça, bu programın ne kadar bellekte sayfa yayınlaması gerektiğine dair hiçbir fikrim yok.


0

Deneyimlerime göre Bekleme bellek sürünmesi gerçek bir sorundur. Örneğin, Snagit'i uzun bir makale için yuvarlanan pencereler modunda çalıştırırsam, makalenin yalnızca Bekleme belleğinde çalışırken yakalanmayan kısımları olacaktır. Her durumda, bilgisayarımın Bekleme belleğinde yavaş çalıştığını fark ettim.

Sorunu çözmek için ücretsiz Glary Utilities dışında bellek optimize edicisini kullanıyorum. Bilgisayarımda 6 GIG bellek var. İlk açtığımda, Windows Kaynak İzleyicisi'ne göre yaklaşık 2 GIG Kullanımda bellek, 2 GIG Bekleme ve Dediğim şeyin 2 GIG'si var. Yarım gün içinde, bilgisayarı kullansam da kullanmasam, tüm Free-Free belleğim Bekleme belleğine dönüşür. Şimdi Windows ile başlatılan Glary Utilities bellek optimizatörü var ve bilgisayarımın tam 2 GIG Free-Free belleğinin süresiz olarak çalışmasını sağlayabilirim.

Başka bir oturum için her oturuşumda önce bellek optimize edici tepsi simgesini çift tıklatıp bir optimizasyon yapıyorum; orijinal 2 GIG'im Free-Free belleğimin boşaltılmasını istiyor. Daha fazlasını isteyebilirim ama ne olursa olsun serbest kalacak maksimum. Optimize edicinin tamamlanması yaklaşık 30 saniye sürer; bu, yeniden başlatma için gerekenden çok daha azdır. Otomatik optimizasyon modu var, ancak nasıl çalıştıracağını anlayamadım.


Bekleme belleği sorun değil.
Jamie Hanrahan

"Bellek optimize edici" hurdaya çıkarılmalıdır. Bekleme RAM, son zamanlarda işlemlerde "kullanımda" olan RAM'dir. Çalışma setinin değiştirilmesi nedeniyle bu süreçlerden çıkarıldı, ancak yine de "kullanımda" olduğunda ne yaptığını içeriyor. Bir işlem bu sayfalardan birinde ne gerekiyorsa sayfa hızlı bir şekilde işleme geri döndürülebilir. Bu nedenle Bekleme, "Önbellek" sayısının bir parçası olarak kabul edilir. Ancak Bekleme, Free RAM gibi diğer kullanımlar için de "Kullanılabilir". "Bellek optimize ediciniz" sadece bir grup sayfayı Beklemeden Ücretsiz'e taşıdı, yani Bekleme önbelleğini
düşürdünüz

[...] daha fazla RAM kullanılabilir hale getirmeden. Çünkü "Bekleme" her zaman zaten "Mevcut" oldu! Vista ve sonraki sürümlerde, Superfetch artık proaktif dosya önbelleklemesi için Bekleme'nin bir bölümünü kullanabilir, ancak sayfalar yine de gerektiğinde diğer procsseslerin kullanımı için tekrar kullanılabilir. Bu yüzden SuperFetch hiçbir sayfayı "Kullanılabilir" öğesinden uzaklaştırmaz. "Bellek yöneticisi" nden kurtulun, sisteminizin performansını düşürerek gereksiz disk G / Ç'lerine neden oluyor.
Jamie Hanrahan

-1

Bu problemi çözmek için

Start-run-msconfig'e gidin, ardından hizmetleri yapın ve onay işaretini "Windows sürücü temeli" nden kaldırın. Tamam'a tıklayın ve makineyi yeniden başlatın.

Unutmayın - Yalnızca yukarıda belirtilen adımlar bu sorunu çözecektir. Services.msc dosyasını devre dışı bıraktıysanız, işletim sistemini önyükleme sırasında hala etkindir ve belleğinizi engeller.

Bunu doğrulamak için aracı kullanın


WDF hizmetinin devre dışı bırakılması, bu sürücü modeline bağlı tüm aygıtları devre dışı bırakır. Bu kötü bir fikir.
Jamie Hanrahan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.