Hangi uygulamaların sanal belleğe gideceğini seçmenin bir yolu var mı?


1

Sanal belleği anlama yöntemim, bir uygulama bir süre kullanılmadığında, kullanılan belleğin diske yazılmasıdır. Bir uygulamayı kullandığımda (netbeans), başka bir şey yaptıktan yaklaşık 10 dakika sonra, web'de gezinme işlemine geri döndüğümde çok yavaş görünüyor.

Sorum ilk olarak sanal bellek konusunda haklı olup olmadığımı ve ikincisi ise, belirli bir hafızanın RAM'ını diğerlerinden daha uzun süre koruyacağını belirtmenin bir yolu var mı? Yoksa daha fazla RAM mi almak zorundayım? Windows 8.1 64-bit kullanıyorum

(Ya da daha fazla RAM indirin) (JOKE)


Bu oldukça işletim sistemine bağlı ...
grawity

İşletim sistemi ekledim
Cobbles

Gerçekten haklısın. Sanal Bellek sayfa dosyası tarafından işlenir. Bu, Windows'un herhangi bir uygulamaya tüm fiziksel belleğinize erişimi olduğunu söylemesini sağlar. Düşük sanal bellek uyarıları almazsanız, bir bellek probleminiz olmaz. NetBeans'in ne kadar hafıza kullandığını belirlemek için bir program kullanın, eğer tahmin etmek tehlikeliysem, pek bir şey kullanmayacak, bu onun olası bir şekilde sanal hafızaya taşınmaması anlamına geliyor
Ramhound

@Ramhound ile aynı fikirde. Bir hata (muhtemelen bunu kastettin) - Sanal Bellek ve sayfa dosyası Windows tarafından yönetiliyor .
Jet,

@Ramhound: Sayfa dosyası, sanal belleğin içeriğinin diske disklenebileceği tek yer değil. Windows'ta üç tür sanal bellek vardır: Sayfalanamaz, özel ve eşlenmiş. Sayfalanamayan VM her zaman RAM'dedir (ve evet, hala "sanal" olarak adlandırılır, çünkü "adres çevirisi" hala devam ediyor). Özel VM sayfa dosyası tarafından desteklenir - veya bir tane yoksa, her zaman RAM'de kalması gerekir. Eşlenen VM için, her eşlemeye ilişkin dosya, eşlemenin destek deposuna hizmet eder (bu, "kod dosyaları", exe ve dll'nin nasıl işlendiğidir).
Jamie Hanrahan

Yanıtlar:


0

Windows'da stokta yapmaya çalıştığınız şeyi yapmanın bir yolu yoktur. Windows, yüksek sayfa hatası oranlarına sahip programların daha fazla RAM kullanmasına otomatik olarak izin verir ve RAM azsa diğerlerini küçültür.

Çeşitli işlemlere atanan RAM’i izleyebilecek ve bunlardan bazılarını sayfaların üzerinde VirtualLock ve SetProcessWorkingSetSize API'leri kullanarak sayfalardan ayırmaya çalışabilecek bir yardımcı programın bulunması mümkündür.

Ancak bununla birlikte, eğer herhangi bir iyilik durumunda fazla bir şey yapamayacağına dair yeterli sınırlamalar var. Bunlardan en önemlisi, VirtualLock'un adres aralığına göre yapılması ve böylesi bir programın, hedef işlemdeki hangi adres aralıklarının kilitlenmesinin önemli olduğunu "bilmemesinin" yolu yoktur. (Sadece her şeyi kilitleyemezsiniz; yer yoktur.) Bu API'ler çoğunlukla rastgele diğer süreçleri ayarlamak için değil, kendi başlarına veya bir dizi işbirliği (ve birlikte bilen) işlem arasında kullanılır. .

(nb: VirtualLock, CreateRemoteThread aracılığıyla hedef işlemde oluşturulan bir iş parçacığından çağırarak çapraz işlem yapılabilir.)

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.