Boş fiziksel hafıza olduğunda sanal hafıza tükeniyor mu?


0

Firefox'um aniden durgunlaştı ve ardından dondu. Neler olup bittiğini görmek için İşlem Gezgini'ni açtım ve firefox.exe ana iş parçacığının çekirdek işlevinde sıkıştığını fark ettim. NtAllocateVirtualMemory. O zamanlar süreç yalnızca 1,5 GB sanal bellek alanı kullanıyordu ve 1 GB'den fazla taahhüt limiti ücretsiz ve en az 1 GB RAM içermiyordu. Firefox’un hafıza alanının fazla parçalanmış olabileceğini düşündüm, bu yüzden onu öldürdüm.

Sonra aşağıdaki gibi bir sürpriz grafik aldım.

screen shot

Gördüğünüz gibi, tüm süre boyunca her zaman RAM ücretsiz olmuştur, ancak her nasılsa isabet sınırına ulaşmış gibiydim. Sayfa dosyaları sistem tarafından yönetiliyor ve sistem sürücüsünde 17GB'tan fazla boş var, bu yüzden limiti nasıl kaldırabilirim hakkında hiçbir fikrim yok .... Bu konuda herhangi bir fikriniz var mı?

Sistem Windows 10 yapı 10586'dır. 8GB RAM'im var.

(Görünen o ki Firefox ya da ilgili bir şey 3-4 GB'lık gizli bir sanal bellek alanı iddia ediyor. Ekran sürücüsü olabileceğini düşünüyorum, ancak sistem sayfa dosyasını neden genişletmedi?)


Firefox'un 32 bit sürümünü mü çalıştırıyorsunuz?
spherical_dog

Evet, 32 bit, ancak normalde 1.9GB sanal bellek kullanabiliyorum.
billc.cn

Eh, tek bir 32-bit işlem için sanal bellek sınırı, eğer adres alanı büyük değilse, 2GB’dır. 32-bit Firefox’un adres alanı farkında olması gerekiyor; bu da çökmeyi açıklamıyor, ancak 64 bit sürümünü test etmek ve çöküp çökmediğini görmek isteyebilirsiniz.
spherical_dog

Yanıtlar:


3

Fiziksel hafıza ve taahhüt limiti ayrı kaynaklardır. Bir başkası kalmış olsa bile bir tanesinden kaçabilirsiniz. Büyük olasılıkla, işlem sınırını yükseltmek için daha büyük bir sayfa dosyasına ihtiyacınız vardır.

Fiziksel hafıza bankadaki paraya çok benzer. Taahhüt sınırı, daha önce yazmış olduğunuz çeklere çok benzer. Bankada çok para olsa bile, çok fazla çek yazdıysanız, daha fazla çek yazamayabilirsiniz.

3GB boş RAM içeren ve sayfa dosyası olmayan bir sisteminiz olduğunu varsayalım. Ve bir uygulamanın 2GB'lık hafıza istediğini söyleyin. Sistem "evet" diyecek ve taahhüt limitini 2GB artıracak. Sistem hala 3GB boş RAM'e sahiptir, çünkü uygulama henüz kullanılmamıştır. Ancak, başka bir uygulama 2 GB bellek isterse, işletim sisteminin reddetmesi gerekecektir. Bankada 3GB var ancak 2GB tutarında bir çek yazdı, 2GB için başka bir çek yazamadı.


Tamam, bu anlamadım (tüm kanıtlar bunu işaret etse bile). Benim saf bilgisayar bilimlerim anlayışıma göre, işlem yapma sınırı sayfalara uygun RAM + sayfa dosyası olmalıdır. Tüm RAM'i nasıl kullanamaz? Yapabileceğim herhangi bir okumanın herhangi bir göstergesi var mı? Ayrıca, İşletim Sisteminin sayfa dosyasını, sistem tarafından yönetildiği gibi ayarlandığı için genişletemediğini de açıklamıyor.
billc.cn

Örneğinizdeki argümanı alıyorum, ancak bu noktada Firefox'u öldürdüm, işlem adres alanı bitmeden en fazla 500 MB daha fazla bellek talep edebilir. Ancak, sistem taahhüt limitinin 1GB altındaydı. (FF'nin öldürülmesinden sonra neredeyse yarıya inen limit nedeniyle taahhüt grafiğinin ölçeklendirme sorunu olduğunu anladım.)
billc.cn

@ billc.cn Sorularınızı sırayla almak: Tüm RAM'leri kullanabilir (örneğin, mevcut yükümlülükleri yerine getirmek için), daha fazla bellek ayıramadığından, bellek ayırma istekleri başarısız olur. İşletim sistemi bellek ayrıldığından ancak kullanılmadığından sayfa dosyasını genişletmedi, kullanılana kadar sayfa dosyası genişletilmeyecek. Muhtemelen, sorunun en azından bir kısmı da 32-bit işlemin sanal adres alanının parçalanmış olmasıydı.
David Schwartz

@ billc.cn Açık olmadığını düşündüğüm nokta, toplam RAM'in işlem limitinin bir parçası olmasına rağmen, RAM'in yalnızca sanal bellek işlemesi nedeniyle "kullanılmış" olarak işaretlenmemiş olmasıdır. 1 GB taahhüt edersem, bu 1 GB sistem taahhüt sınırını kullanır, ancak o bölgede bir şey depolayana kadar aslında herhangi bir RAM kullanmaz. Ve sonra sadece yazdıklarımı depolamak için gereken kadarını kullanır. Bir süre sonra bundan daha azını kullanabilir, eğer çok fazla başvuru yapmazsam ve işletim sistemi bazılarını daha yüksek aktivite gerektiren bir işlem için daha kullanılabilir hale getirmek için bir kısmını sayfa dosyasına taşımaya karar verir.
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.