Son Q'nuzu yeniden yazın - Kısa versiyon: Hata mesajı "taahhüt edilmiş" sanal adres alanı ile ilgilidir. İkinci ekran görüntüsünüzdeki Ücretlendirme grafiğine bakarsanız, limitin gerçekten veya çok yakın olduğunu göreceksiniz.
"Ücretsiz", "kullanılabilir" veya "kullanımda" olan RAM miktarı önemli değildir. Özellikle “kullanılabilir” RAM eksikliği “kesinlikle yetersiz bellek” veya “yetersiz bellek” mesajının nedeni değildir.
Taahhüt sınırı, toplam RAM + sayfa dosyası boyutuna eşittir. Taahhütlü bellek tahsis edildiğinde, henüz kullanılmamış olsa bile derhal “şarj et” olarak ücretlendirilir ... yani hiçbir RAM veya PF alanı hemen kullanılmaz. Fiziksel alan (RAM'de veya sayfa dosyasında olsun) yalnızca belleğe gerçekten başvurulduğunda kullanılır. O andan itibaren program serbest kalana veya tüm işlem bitene kadar olması gereken bir yer olmalıdır.
Örnek: Sayfa dosyası olmadığınızı varsayalım, bu nedenle kabul sınırınız 16 GB'dir (RAM boyutunuz). Şimdi, 8 işlemin her birinin VirtualAlloc (MEM_COMMIT) 1 GB’yi denediğini varsayalım. Sonuç: Ücretlendirme 8 GB arttırıldı. Ancak RAM üzerinde hemen bir etkisi yoktur! Kırtasiye dükkanından bir kağıt dolusu kağıt almış gibisin, ama aslında hiç kağıt alamadın. Ne zaman yeni bir sayfaya ihtiyacınız olursa, sihirli bir görüntü ortaya çıkıyor. Pad'in tamamını kullanana kadar (tahsis edilen bölgenin büyüklüğü).
Şimdi, bu işlemlerin her birinin gerçekte 1 GB’sından yalnızca 100 MB’ye eriştiğini varsayalım. Kullanılan RAM sadece 800 MB olacaktır.
Ancak, her biri 1 GB’ın tamamına başvuruda bulunabildiğinden , işletim sistemi 8 GB RAM + sayfa dosyası alanı ... olduğundan emin olmak için, sadece sayfa dosyası olmaması durumunda yalnızca RAM ... . Kırtasiye dükkanına geri dönecek olursak, herkese daha önce aldıkları kadar kağıt verebilecek kadar kağıt bulundurmaları gerekir.
Buna göre, işletim sistemi, mevcut miktar sınırına ulaştığında VirtualAlloc'un (MEM_COMMIT) başarılı olmasına izin vermemelidir.
Niye ya? Çünkü işlemin başarılı olup olmadığını görmek için VirtualAlloc'un sonucunu kontrol etmesi bekleniyor. Bunu yaptıktan ve tahsisin başarılı olduğunu tespit ettikten sonra, süreç müteakip tüm bölgeye müteakip referanslarının başarılı olmasını bekleyecek her hakka sahiptir.
Windows, taahhüt ücretinin bu alanı gerçekleştirmek için kullanılabilir alan miktarını aşmasına izin verdiyse, bu beklenti her zaman karşılanamazdı.
Hızlı bir geçici çözüm, sayfa dosyanızın varsayılan (= başlangıç) boyutunu artırmaktır. Yukarıdaki açıklamadan , bu dosyaya hiçbir şey yazılmamış olsa bile , bunun neden hata mesajından kaçınacağını görebilmelisiniz . Yine, işletim sistemi ihtiyacı olması durumunda tüm taahhüt masrafları için alanın sağlandığından emin olmaktır . İşlemler kararlı bellek ayırdığında sadece "hey, işletim sistemi, buna ihtiyacım olabilir " diyorlar . Bu, gerçekten kullanacakları anlamına gelmez ve kesinlikle kullandıkları anlamına gelmez.
Daha fazlası için cevabımı burada gör .
Şimdi .... neden bu kadar çok şey kullanıyorsunuz, süreçleriniz buna katkısı görünmüyorsa başka bir soru. Buna bakmak için, lütfen Görev Yöneticisinin Performans sekmesini, Bellek bölümünü gösteriniz.