O que é a política de alocação de memória virtual do Windows?

1

Eu configurei o tamanho da memória virtual para ser gerenciado pelo sistema. Embora haja um espaço amplo no disco, corri para o erro "falta de memória", ao contrário da suposição de que o sistema deveria apenas alocar mais memória virtual nesse caso. Então, qual é a política de alocação de memória virtual automática do Windows? O Windows também requer que a memória usada por um único processo seja ajustada na memória física, mesmo que alguns segmentos estejam inativos?

Meus problemas são para o Windows x64 em geral (se tiver que ser específico, então é o Win 8.1, 16GB de RAM, fazendo computação científica).

EDITAR : Para ser mais específico, os softwares são MATLAB R2015a (win64) e Gurobi 6.0.5 (win64). Ambos tiveram tais erros em diferentes casos. Eu não acho que eles tenham algo a ver com coisas de 32 bits. Também acho que o erro simplesmente significa que a função de alocação de memória (digamos new ou malloc) retorna algo inválido.

    
por LeOpArD 22.09.2015 / 02:43

1 resposta

1

O mais provável é que o processo que faz os cálculos seja de fato de 32 bits. Tais processos são limitados a abordar um máximo de 2 GB a 4 GB (dependendo de como o aplicativo é compilado), independentemente de o SO ser de 32 ou 64 bits.

Se o aplicativo usar o .NET framework, outras limitações entrarão em ação, mesmo se o aplicativo for de 64 bits. A menos que você esteja ronronando com . NET 4.5 ou posterior isto é.

Por fim, mesmo os aplicativos de 64 bits puros incorrem em problemas se não tiverem sido codificados adequadamente. Eu vi aplicativos de 64 bits falhar porque, internamente, eles ainda trabalham com variáveis de 32 bits para coisas como índices. Quando você empurra esse aplicativo muito longe (como tentar inserir um item de 4.294.967.297), você obtém uma falha inevitável, mesmo que haja bastante memória RAM de sobra.

Veja algumas boas documentações do MS sobre como o Windows expande o arquivo de páginas quando necessário:

when the system commit charge is more than 90 percent of the system commit limit, the page file is increased to back it. This continues to occur until the page file reaches three times the size of physical memory or 4 GB, whichever is larger. This all assumes that the logical disk that is hosting the page file is large enough to accommodate the growth.

    
por 22.09.2015 / 02:53