Pergunta

No Windows Server 2003, Enterprise Edition, SP2 (opção / 3GB não habilitado)

Como eu o entendo, e eu posso estar errado, o máximo de memória endereçável para um processo é de 4 GB.

É que 2GB de bytes privados e 2GB de bytes virtuais?

Você fica "fora de memória" erros quando o limite de byte privada ou limite de byte virtual é alcançado?

Foi útil?

Solução

É verdade que o espaço máximo endereço de um processo é de 4 GB, em um sentido. Metade do espaço de endereço é, para cada processo, retomada pelo sistema operacional. Isto pode ser alterado com o 3GB mas pode causar instabilidade no sistema. Assim, ficamos com 2 GB de memória endereçável para o processo de uso por conta própria. Bem, não inteiramente. Acontece que uma parte desse espaço é ocupado por outras coisas, como DLLs um outro código comum. A memória disponível real para você como um programador é de cerca de 1,5 GB -. 1.7GB

Eu não tenho certeza sobre como você pode lidar com acidentalmente vai acima deste limite, mas eu sei de jogos que acidente em grande mapas multiplayer por este motivo. Outra coisa a notar é que um programa de 32 bits não pode usar mais do que o espaço de endereço 2 GB em um sistema de 64 bits, a menos que permitir que o LARGEADDRESSAWARE /:. Flag vinculador YES

Outras dicas

O link a seguir explica muito melhor do que eu jamais poderia:

MSDN - CLR Inside Out: Investigando problemas de memória

Mark Russinovich iniciou uma série de posts sobre isso .. Empurrando os limites do Windows: Memória Física

Enquanto 4GB é o limite licenciado para o cliente SKUs de 32 bits, o limite efetivo é realmente inferior e dependente de chipset do sistema e dispositivos conectados. A razão é que o mapa endereço físico inclui não apenas RAM, mas a memória do dispositivo, bem como, e x86 e x64 sistemas Roteiro Os memória do dispositivo abaixo do limite de endereço de 4GB para permanecer compatível com os sistemas operacionais de 32 bits que não sabem como lidar com aborda maior do que 4 GB. Se um sistema tiver 4 GB de RAM e dispositivos, como vídeo, adaptadores de áudio e de rede, que implementam janelas em sua memória dispositivo que soma para 500MB, 500MB de 4GB de RAM irá residir acima do limite de endereço de 4GB.

Você só pode acessar 2 GB de memória no total (sem a 3GB) em plataformas de 32 bits do Windows.

Você pode executar várias VMs de 32 bits em um sistema operacional de 64 bits para que cada aplicativo tem acesso a tanta memória quanto possível se a sua máquina tem mais de 4GB.

Um monte de pessoas estão apenas começando a bater essas barreiras, eu acho que é mais fácil se o seu aplicativo está em .NET ou Java como o VMs felizmente ir até 32 GB de memória no sistema operacional de 64 bits.

Em 32 bits, se houver memória física suficiente e espaço em disco para a memória virtual, a memória se esgota em torno de 3 GB desde o kernel reserva espaço de endereço acima 0xC0000000 por si. Em um 64 bits kernel em execução uma aplicação de 64 bits, o limite é de 8 TB.

Para mais detalhes, consulte a MSDN - Limites de memória para Lançamentos do Windows

memória endereçável máxima para uma máquina de 32 bits é de 4 GB, para uma máquina de 64 bits, você pode abordar cargas mais. (Embora algumas máquinas de 32 bits têm sistemas de extensão para acessar mais, mas eu não acho que isso vale a pena incomodar-se com ou considerando para uso).

Você recebe erros de memória quando o limite virtual é alcançado. No Windows Server 2003, gerenciador de tarefas diz que o limite na guia desempenho rotulado 'Commit limite de custo'.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top