Apakah ada cara untuk memilih aplikasi mana yang masuk ke memori virtual?

1

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

(Atau unduh lebih banyak RAM) (LELUCON)

Cobbles
sumber
Ini sangat tergantung pada sistem operasi ...
grawity
Saya telah menambahkan OS
Cobbles
Anda memang benar. Memori Virtual ditangani oleh file halaman. Ini memungkinkan Windows memberi tahu aplikasi apa pun yang mereka akses ke semua memori fisik Anda. Kecuali jika Anda mendapatkan peringatan kehabisan memori virtual Anda tidak memiliki masalah memori. Gunakan program untuk menentukan berapa banyak memori yang digunakan Netbeans, jika saya harus menebak, itu tidak akan menggunakan banyak yang berarti tidak mungkin dipindahkan ke memori virtual.
Ramhound
Setuju dengan @Ramhound. Satu kesalahan (mungkin Anda maksudkan ini) - Memori Virtual dan file halaman dikelola oleh Windows.
Jet
@Ramhound: pagefile bukan satu-satunya tempat isi memori virtual dapat di-paged ke disk. Ada tiga jenis memori virtual di Windows: Nonpageable, private, dan dipetakan. VM nonpageable ada dalam RAM setiap saat (dan ya, itu masih disebut "virtual", sebagian karena "terjemahan alamat" masih terjadi). VM pribadi didukung oleh pagefile - atau jika Anda tidak memilikinya, ia harus tetap dalam RAM setiap saat juga. Untuk VM yang dipetakan, file yang ditentukan untuk setiap pemetaan berfungsi sebagai toko dukungan pemetaan (ini adalah bagaimana "file kode", exe dan dll, ditangani ... antara lain).
Jamie Hanrahan

Jawaban:

0

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.)

Jamie Hanrahan
sumber