A JVM não pode usar a memória de página grande porque não tem privilégio suficiente para bloquear as páginas na memória
Pergunta
Gostaria de saber como posso reconciliar o seguinte erro?
A JVM não pode usar a memória de página grande porque não tem privilégio suficiente para bloquear as páginas na memória
As configurações são:
Definir java_OPTS = -xms20g -xmx20g -xx:+useconCmarksweepgc -xx:+useParnewgc -xx:+uselargePages -duser.TimeZone = "GMT" %de depuração %
Isso aconteceu no Windows Server 2003.
Solução 3
Somente o Windows Server 2003 suporta memória de página grande. Para usá -lo, o administrador deve primeiro atribuir privilégio adicional ao usuário que estará executando o aplicativo: 1. Selecione Painel de controle -> Ferramentas Administrativas -> Política de Segurança Local 2. Selecione Políticas Locais -> Atribuição de Direitos do Usuário 3. Double Clique em "Bloquear páginas na memória", adicione usuários e/ou grupos 4. Reinicie a máquina
Outras dicas
Pesquilo no Google sobre o erro leva ao hotspot/src/os/win32/vm/os_win32.cpp Arquivo de origem no OpenJDK-6 Wich contém o seguinte comentário:
// Windows large page support is available on Windows 2003. In order to use
// large page memory, the administrator must first assign additional privilege
// to the user:
// + select Control Panel -> Administrative Tools -> Local Security Policy
// + select Local Policies -> User Rights Assignment
// + double click "Lock pages in memory", add users and/or groups
// + reboot
// Note the above steps are needed for administrator as well, as administrators
// by default do not have the privilege to lock pages in memory.
//
// Note about Windows 2003: although the API supports committing large page
// memory on a page-by-page basis and VirtualAlloc() returns success under this
// scenario, I found through experiment it only uses large page if the entire
// memory region is reserved and committed in a single VirtualAlloc() call.
// This makes Windows large page support more or less like Solaris ISM, in
// that the entire heap must be committed upfront. This probably will change
// in the future, if so the code below needs to be revisited.
Se você estiver usando o Windows 2003, isso pode ajudar. Caso contrário, não tenho nenhuma outra sugestão.
Enfrentei que apenas as configurações definidas abaixo não são suficientes:
O suporte à página grande do Windows está disponível no Windows 2003. para usar
Memória de página grande, o administrador deve primeiro atribuir privilégios adicionais
para o usuário:
- Selecione Painel de Controle -> Ferramentas Administrativas -> Política de Segurança Local
- Selecione Políticas Locais -> Atribuição de Direitos do Usuário
- Clique duas vezes em "Páginas de bloqueio na memória", adicione usuários e/ou grupos
- reinício
Nota As etapas acima também são necessárias para o administrador, como administradores
Por padrão, não tem o privilégio de bloquear as páginas na memória.
O programa que chamará o intérprete Java (Java Program.java) deve ser chamado com rulles administrativos. Exemplo: Eclipse, NetBeans, CMD, etc. No Windows Made After 2003, você precisa fazer configurações acima e, depois de clicar com o botão direito para abrir o menu e escolher "Corra como Admnistrator" no ícone ou programa de chamadas executáveis.