Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Nas edições de 32 bits do Windows, os aplicativos têm 4 gigabytes (GB) de espaço de endereço virtual disponível. O espaço de endereço virtual é dividido de modo que 2 GB está disponível para o aplicativo e os outros 2 GB está disponível apenas para o sistema. O recurso de ajuste de 4 gigabytes (4GT ou 4GT RAM Tuning), ativado com o comando BCDEdit /set increaseuserva, aumenta o espaço de endereço virtual disponível para o aplicativo até 3 GB e reduz a quantidade disponível para o sistema para entre 1 e 2 GB.
Para aplicativos que consomem muita memória, como sistemas de gerenciamento de banco de dados (DBMS), o uso de um espaço de endereçamento virtual maior pode fornecer benefícios consideráveis de desempenho e escalabilidade. No entanto, o cache de arquivos, o pool paginado e o pool não paginado são menores, o que pode afetar negativamente os aplicativos com rede pesada ou E/S. Portanto, convém testar seu aplicativo sob carga e examinar os contadores de desempenho para determinar se seu aplicativo se beneficia do espaço de endereçamento maior.
Para habilitar o 4GT, use o comando BCDEdit /set para configurar a opção de entrada de inicialização increaseuserva para um valor entre 2048 (2 GB) e 3072 (3 GB).
Windows Server 2003 e versões anteriores: Para habilitar o 4GT, adicione a opção /3GB ao arquivo Boot.ini. A opção /3GB é suportada nos seguintes sistemas:
- Windows Server 2003
- Windows XP Profissional
O switch de /3GB disponibiliza 3 GB de espaço de endereço virtual para aplicativos e reduz a quantidade disponível para o sistema para 1 GB. No Windows Server 2003, a quantidade de espaço de endereçamento disponível para aplicativos pode ser ajustada definindo a opção de /USERVA em Boot.ini para um valor entre 2048 e 3072, o que aumenta a quantidade de espaço de endereço disponível para o sistema. Isso pode ajudar a manter o desempenho geral do sistema quando o aplicativo requer mais de 2 GB, mas menos de 3 GB de espaço de endereço.
Para permitir que um aplicativo use o espaço de endereço maior, defina o sinalizador IMAGE_FILE_LARGE_ADDRESS_AWARE no cabeçalho da imagem. O vinculador incluído no Microsoft Visual C++ suporta o comutador /LARGEADDRESSAWARE para definir esta sinalização. Definir esse sinalizador e, em seguida, executar o aplicativo em um sistema que não tem suporte 4GT não deve afetar o aplicativo.
Nas edições de 64 bits do Windows, os aplicativos de 32 bits marcados com o sinalizador IMAGE_FILE_LARGE_ADDRESS_AWARE têm 4 GB de espaço de endereço disponível.
edições Itanium do Windows Server 2003: Antes do SP1, os processos de 32 bits tinham apenas 2 GB de espaço de endereço disponível.
Use as seguintes diretrizes para suportar 4GT em aplicativos:
- Endereços próximos ao limite de 2 GB são normalmente usados por várias DLLs do sistema. Portanto, um processo de 32 bits não pode alocar mais de 2 GB de memória contígua, mesmo se todo o espaço de endereço de 4 GB estiver disponível.
- Para recuperar a quantidade total de espaço virtual do usuário, use a funçãoGlobalMemoryStatusEx. Para recuperar o endereço de usuário mais alto possível, use a função GetSystemInfo. Sempre detete o valor real em tempo de execução e evite o uso de definições constantes com fio, como:
#define HIGHEST_USER_ADDRESS 0xC0000000. - Evite comparações assinadas com ponteiros, porque eles podem fazer com que os aplicativos falhem em um sistema habilitado para 4GT. Uma condição como a seguinte é falsa para um ponteiro acima de 2 GB:
if (pointer > 40000000). - O código que usa o bit mais alto de um ponteiro para uma finalidade definida pelo aplicativo falhará quando o 4GT estiver habilitado. Por exemplo, uma palavra de 32 bits pode ser considerada um endereço de modo de usuário se estiver abaixo de 0x80000000 e um código de erro se estiver acima. Isso não é verdade com o 4GT.
VirtualAlloc geralmente retorna endereços baixos antes de endereços altos. Portanto, seu processo pode não usar endereços muito altos, a menos que aloce muita memória ou tenha um espaço de endereço virtual fragmentado. Para forçar alocações a utilizarem endereços superiores antes de endereços inferiores para fins de teste, especifique MEM_TOP_DOWN ao chamar VirtualAlloc ou defina o seguinte valor do registro como 0x100000:
HKEY_LOCAL_MACHINE\Sistema\CurrentControlSet\Control\Gestor de Sessão\Gestão de Memória\AllocationPreference
Tópicos relacionados
-
4GT Referência Técnica