Existe uma maneira de escolher quais aplicativos vão para a memória virtual?

1

A maneira que eu entendo a memória virtual é que quando um aplicativo não está sendo usado por um período de tempo, a memória que está sendo usada é gravada no disco. Quando eu uso um aplicativo (netbeans), parece ser muito lento quando eu volto para ele após cerca de dez minutos fazendo outra coisa, digamos, navegação na web.

Minha pergunta é, em primeiro lugar, se estou certo sobre a memória virtual e, em segundo lugar, se existe uma maneira de especificar se uma determinada memória mantém sua RAM por mais tempo do que outras? Ou eu tenho que comprar mais RAM? Estou usando o Windows 8.1 de 64 bits

(ou baixe mais RAM) (JOKE)

    
por Cobbles 28.05.2014 / 12:16

1 resposta

0

Não há como fazer o que você está tentando fazer no Windows. O Windows permitirá automaticamente que os programas com altas taxas de falhas de página usem mais RAM e encolherão outros, se a RAM for escassa.

É possível que exista um programa utilitário que possa monitorar a RAM atribuída a vários processos e tentar dissuadir alguns deles de serem paginados, usando, por exemplo, as APIs VirtualLock e SetProcessWorkingSetSize nelas.

No entanto, existem limitações suficientes com isso que não faria muito se algum bem. Um dos principais é que o VirtualLock é feito por intervalo de endereços e tal programa não teria como "saber" quais intervalos de endereços no processo de destino eram importantes para serem bloqueados. (Você não pode simplesmente bloquear tudo; não há espaço.) Essas APIs são principalmente destinadas a serem usadas por um processo em si, ou entre um conjunto de processos cooperativos (e co-conhecedores), não para ajustar outros processos aleatórios. .

(n.b .: O VirtualLock pode ser feito através do processo cruzado, chamando-o de um encadeamento criado no processo de destino via CreateRemoteThread.)

    
por 04.10.2014 / 19:23