Cara saya memahami memori virtual adalah ketika aplikasi tidak digunakan untuk jangka waktu tertentu, memori yang digunakan akan ditulis ke disk. Ketika saya menggunakan aplikasi (netbeans), sepertinya sangat lambat ketika saya kembali ke sana setelah sekitar sepuluh menit melakukan sesuatu yang lain, katakanlah, browsing web.
Pertanyaan saya pertama adalah apakah saya benar tentang memori virtual dan jika demikian kedua, apakah ada cara untuk menentukan apakah memori tertentu mempertahankan RAM-nya lebih lama lebih lama daripada yang lain? Atau apakah saya harus membeli lebih banyak RAM? Saya menggunakan Windows 8.1 64-bit
memory
virtual-memory
Cobbles
sumber
sumber
Jawaban:
Tidak ada cara untuk melakukan apa yang Anda coba lakukan dalam stok Windows. Windows akan secara otomatis memungkinkan program yang mengalami tingkat kesalahan halaman tinggi untuk menggunakan lebih banyak RAM, dan akan menyusut yang lain, jika RAM langka.
Ada kemungkinan bahwa ada program utilitas yang dapat memonitor RAM yang ditetapkan untuk berbagai proses dan mencoba untuk mencegah beberapa dari mereka dari paging, dengan menggunakan mis. API VirtualLock dan SetProcessWorkingSetSize pada mereka.
Namun ada batasan yang cukup dengan ini sehingga tidak akan berbuat banyak jika ada gunanya. Yang utama adalah bahwa VirtualLock dilakukan oleh rentang alamat dan program seperti itu tidak akan memiliki cara "mengetahui" rentang alamat dalam proses target yang penting untuk dikunci. (Anda tidak bisa hanya mengunci semuanya; tidak ada ruang.) API ini sebagian besar dimaksudkan untuk digunakan oleh suatu proses pada dirinya sendiri, atau di antara serangkaian proses yang bekerja sama (dan saling pengetahuan), bukan untuk menyesuaikan proses acak lainnya .
(n.b .: VirtualLock dapat dilakukan lintas proses dengan memanggilnya dari utas yang dibuat dalam proses target melalui CreateRemoteThread.)
sumber