Ücretlendirme% 100 dolu, ancak sayfa belleği kullanılmadığında fiziksel hafıza% 60


25

Sistemimdeki sayfa dosyasını devre dışı bıraktım (sabit disk çok yavaş, hemen yeni bir tane satın alamıyorum, sayfa dosyasını başka bir bölüme taşıyamıyorum). Kaynak İzleyicisi'ne baktığımda, bellek gerektiren uygulamaları kullanarak, sistem, taahhüt ücretinin neredeyse% 100 dolu olduğunu gösteriyor. Aslında, daha fazla bellek talep etmeye devam edersem, taahhütler etkili bir şekilde% 100'e ulaştığında programlar çökmeye başlar.

Bu arada, sistem sadece% 50-60'lık bir fiziksel bellek kullandığımı ve yaklaşık 1GB'lık boş hafıza bulunduğunu söylüyor (boş + bekleme).

Taahhüt tam olarak talep edilen toplam hafıza ise, sistem neden bu kadar hafıza boş olduğunu söylüyor? Fiziksel bellek Windows tarafından kullanılmıyor mu? Hafıza grafiği yanlış mı? Bir şey mi eksik?

Şarj grafiğini işle vs Fiziksel bellek grafiği Görev Yöneticisi


2
Konuyla ilgili başka bir iyi cevap burada: brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7 .
15:15

@cnst Çok iyi makale. Bu sorunu daha iyi anlamama yardımcı oldu. Neden cevap olarak göndermiyorsun?
Jason Oviedo

2
Lütfen sayfa dosyası kişilerinizi devre dışı bırakmayın. Bu aptalca bir fikir
Milney

@Milney Katılıyorum, genellikle sayfa dosyasını devre dışı bırakmamalısınız. Soru anında, disk çok yavaş olduğu için benim için bir anlam ifade ediyordu, o kadar ki sistemimi sakat bırakıyordu. Bu soruyu sormanın yanı sıra, sistemin genel yanıt verebilirliği birçok kez gelişti.
Jason Oviedo,

@ JasonOviedo Bu durumda olmamalıdır ve bir şeylerin çok yanlış olduğunu gösterir . Verilmesi sistemi daha fazla seçenek olmalıdır DEĞİL o yavaş olun. Sistem sayfa dosyasını kullanmak zorunda değildir, çünkü dosyadadır. (Bu muhtemelen bir XY sorusu anlamına gelir. Doğru soru tam olarak sayfa dosyasının neden sisteminizi yavaşlattığını belirtir.)
David Schwartz

Yanıtlar:


26

Hala yeterli miktarda RAM’iniz varken, taahhüt limitinizin tükenmesi olağandışı değildir. Ne taahhüt limiti ne de taahhüt bedeli doğrudan ücretsiz veya mevcut RAM ile ilişkili değildir.

Taahhüt sınırı = geçerli sayfa dosyası boyutu + RAM boyutu.

Sayfa dosyanız olmadığından, yükleme sınırı, bir sayfa dosyanız varsa, olduğundan küçüktür. RAM'in ne kadarının boş olduğu önemli değil . Yükleme sınırı için, yalnızca yüklü RAM miktarı önemlidir. RAM'inizin% 90’ı ücretsiz veya kullanılabilir olsa bile, işlem limitiniz bitebilir.

Ücretlendirme, fiziksel değil, sanal bellek sayısıdır. Programımın 2 GB taahhütte bulunduğunu varsayalım, ancak daha sonra yalnızca .5 GB’a erişebildiğini varsayalım. Kalan 1,5 GB hiçbir zaman hatalı çalışmaz, hiçbir zaman RAM'e atanmaz, bu nedenle RAM kullanımı 2 GB'ı yansıtmaz, sadece 5 GB'ı gösterir.

Yine de, "sistem taahhüdü" 2 GB artırıldı, çünkü sistem "2 GB'ımı tutabilecek bir yer olacağına" karar verdi ", aslında hepsine ihtiyacım olursa. Programın herhangi bir çalışmasında mutlaka kullanmaya çalışmamam gerçeği işe yaramaz. 2 GB istedim ve bu çağrıdan gelen başarılı dönüş bana işletim sisteminin "taahhüt ettiği" - yani söz verdiğim - bu kadar sanal adres alanını kullanabileceğimi söyledi. OS, hepsini tutacak bir yer olmadığı sürece bu sözü veremez.

Dolayısıyla: sayfa dosyanızı geri koyun, daha fazla RAM ekleyin veya bir kerede daha az şey çalıştırın. Ya da üçünün bir kombinasyonu. Bunlar, "yetersiz bellek" ve "yetersiz bellek" hatalarını önlemek için tek seçeneklerinizdir.

Ayrıca burada (daha uzun) ve burada (çok daha uzun) cevaplarıma bakınız .


3
Özellikle, Windows bellek ayırmadan önce, kullanıldıklarında bu tahsisleri yerine getirebileceğini garanti etmek istiyor. Tahsisatlar tam olarak kullanılmasa bile, Windows bu garantiyi veremezse daha fazla tahsis etmeyi reddedecektir. Bir sayfa dosyası, kullanılmış olsun veya olmasın, ek yedek depolama sağlar.
Bob,

4

Http://brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7/ adresindeki makalede bellek ayırma testi , Windows’un büyük bir bellek ayırmada başarısız olacağı bir sistem türüdür. eğer böyle bir tahsisat, önceki tahsislerle birlikte (Microsoft, "taahhüt" olarak adlandırır kavramı), toplam "taahhüt" i hem fiziksel hafızanın hem de tüm sayfa dosyalarının (takas) toplamının üzerine getirir.

Bir tahsisatın , yukarıda belirtilen tahsisat işleminin sanal adres alanı içinde gerçekleşen bir okuma veya yazma işleminden önce herhangi bir gerçek hafızayı (ne fiziksel ne de takas) kullanmadığını düşünün . Örneğin , 2GB'lık bir tahsisat yalnızca "Commit" ( Etkilenen) sayılarını etkiler (Windows 7 konuşmasında), "Fiziksel Hafızayı" yalnız bırakır (söz konusu tahsisat içinde okuma / yazma gerçekleşene kadar).

İşletim sistemi tasarımına gelince, alternatif yaklaşım her zaman herhangi bir boyutta tahsis edilmesine izin vermek olacaktır (mevcut hafıza zaten tamamen tüketilmemişse) ve ardından uygulamaların okuma / yazma işleminde başarısız olmasına izin vermek olacaktır. Daha fazla ayrıntı için /cs/42877/when-theres-no-memory-should-malloc-or-read-write-fail adresini ziyaret edin .


2
Evet. Windows'un yaklaşımı argümanı: programcıların bir malloc (veya Win32'de VirtualAlloc) durumunu kontrol etmesini beklemek mantıklıdır. Bu çağrı başarılı olduktan sonra, program tahsis edilen vasın kullanılabilir olduğuna ve ilgili bir serbest veya VirtualFree'ye kadar devam edeceğine güvenebilir. Diğer taraftan, sıradan hafıza, okur ve yazar (örneğin, işaretçilerin kaldırılması), hafıza erişim istisnalarını artırabilir. Ancak hiçbir programcı, her bir işaretçi başvurusundan sonra durumu kontrol etmek zorunda değildir. Zaten bir statü döndürmezler, bu yüzden bir istisna işleyicisi ile yapılması gerekirdi. Çirkin.
Jamie Hanrahan

2

Kullanılabilir hafıza, düşündüğünüz gibi değil. Gerçekten kullanılmamış, sonlandırılmış işlemlerin veya başka işlemlere bir miktar bellek vermeye zorlanan kırpılmış işlemlerin bir dosya önbelleği kullanılmadı. Orjinal amaçlarına geri çağrılabilirler. daha fazla ayrıntı için bkz.

http://support.microsoft.com/kb/312628

Bir sayfa dosyası olmadığı için bu çok kötü. Windows bir olmadan zayıf şekilde bozulur. Yürütülebilir dosyaların bile sayfa dosyası olmadığında takas dosyaları olarak kullanıldığını unutmayın. Sürücü yavaş olsa bile, 8 ila 16 gig bellek alabilene kadar bir sayfa dosyasına sahip olmak daha iyidir. Bazı insanlar Windows 7'nin bile bir olmadan çalışabileceğini düşünüyor.

Eski makineye düzenli olarak birkaç şey yaparak destek veriyorum. Sabit sürücüyü mümkün olduğu kadar temizleyin. Geçici olarak temizleyebileceğiniz her şeyi sürücüden yedeklemeye kopyalayın. İhtiyacınız olmayan uygulamaları kaldırın. Kaldır uygulamaları yeniden yükleyebilir.

Bütün bunlar bittiğinde sabit diskinizi birleştirin. Bu noktada sayfa dosyanızı yeniden oluşturun. Mümkün olduğunca sürücünün önüne en yakın olacaktır. Yaklaşık 1,5 katı bellek büyüklüğü oluşturun. Bu benim kuralım, genellikle 1 ila 3 zaman hafızası arasında boyutlar gördüm. Bu, yerleştirileceği normal yerlere göre hızda hafif bir artış sağlayacaktır.

Ücretsiz olarak auslogic birleştiriciyi kullanıyorum (yine de daha fazla araç için reklamlar). Bunu da yapan başkaları var. Portableapps.com adresindeki birleştiricilere göz atın. Yeni erişilen dosyaları daha hızlı erişim için sürücünün ön tarafına yerleştirerek diski optimize eder. Sayfa dosyasının nereye yerleştirildiğini gösterir, böylece dosyayı sürücünün en üst% 25'ine taşıp taşmadığınızı görebilirsiniz.

Bundan sonra uygulamaları yeniden yükleyin ve verilerinizi geri kopyalayın.

% 10 ya da% 20 destek aldığını söyleyebilirim. Ancak asıl değer, daha yumuşak bir deneyim için tereddütlerin çoğunun ortadan kalkmasıdır.


3
Bazı sınamaları kullanarak, benim için disk çok yavaş olduğunda, bir sayfa dosyasına sahip olmamanın sistemi gerçekten hızlandırdığı anlaşılıyor. Uygulama değişikliği olarak basit görevlerde birçok saniye farkını söyleyebilirim.
Jason Oviedo,

@Mark Yanılıyorsun. Windows sistemlerinin büyük çoğunluğu bir sayfa dosyasıyla çalışır (çünkü bu, Windows'un varsayılan olarak iyi ve yeterli bir nedenle nasıl çalıştığıdır) ve neredeyse hepsi benzer hızda diskler kullanır. Neredeyse hiçbiri böyle bir problem göstermiyor. Sorun "sayfa dosyası" değil, yeterli RAM'iniz olmamasıdır. Lütfen sayfa dosyasından kurtulmanın sayfalamayı diskten ve diskten atmadığını unutmayın; yalnızca genellikle disk belleği ile ilgilenen genellikle yüzlerce dosyadan birini ortadan kaldırır .
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.