La JVM ne peut pas utiliser une mémoire de page volumineuse car elle ne dispose pas des privilèges suffisants pour verrouiller les pages en mémoire.

StackOverflow https://stackoverflow.com/questions/1615717

  •  06-07-2019
  •  | 
  •  

Question

Je me demande comment puis-je réconcilier l'erreur suivante?

  

La JVM ne peut pas utiliser une mémoire de page volumineuse car elle n'en a pas assez   privilège de verrouiller les pages en mémoire

Les paramètres sont les suivants:

  

set JAVA_OPTS = -Xms20g -Xmx20g -XX: + UseConcMarkSweepGC -XX: + UseParNewGC   -XX: + UseLargePages -Duser.timezone = " GMT " % DEBUG%

Cela s'est produit sous Windows Server 2003.

Était-ce utile?

La solution 3

Seul Windows Server 2003 prend en charge une mémoire de page volumineuse. Pour pouvoir l'utiliser, l'administrateur doit d'abord attribuer des privilèges supplémentaires à l'utilisateur qui exécutera l'application: 1. sélectionnez Panneau de configuration - > Outils d'administration - > Stratégie de sécurité locale 2. sélectionnez Stratégies locales - > Attribution des droits de l'utilisateur 3. double-cliquez sur "Verrouiller les pages en mémoire", ajouter des utilisateurs et / ou des groupes 4. redémarrez la machine

Autres conseils

Googler sur l'erreur mène à la hotspot / src / os / win32 / vm / os_win32.cpp dans le fichier source openjdk-6 contenant le commentaire suivant:

// 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.

Si vous utilisez Windows 2003, cela pourrait vous aider. Sinon, je n'ai pas d'autre suggestion.

J'ai constaté que seules les configurations définies ci-dessous ne suffisent pas:

  

La prise en charge de grandes pages Windows est disponible sous Windows 2003. Pour pouvoir utiliser
  mémoire de page volumineuse, l'administrateur doit d'abord attribuer un privilège supplémentaire
  à l'utilisateur:

     
    
        
  • sélectionnez Panneau de configuration - > Outils d'administration - > Stratégie de sécurité locale
  •     
  • sélectionnez Politiques locales - > Attribution des droits de l'utilisateur
  •     
  • double-cliquez sur "Verrouiller les pages en mémoire", ajouter des utilisateurs et / ou des groupes
  •     
  • redémarrez
  •     
  
     

Notez que les étapes ci-dessus sont également nécessaires pour l'administrateur, en tant qu'administrateur
  Par défaut, vous ne pouvez pas verrouiller les pages en mémoire.

Le programme qui appellera l'interprète java (java program.java ) doit être appelé avec des règles administratives. Exemple: Eclipse, Netbeans, cmd, etc. Dans Windows créé après 2003, vous devez définir les paramètres ci-dessus, puis cliquer avec le bouton droit de la souris pour ouvrir le menu et choisir "exécuter en tant qu'administrateur" dans le menu déroulant. icône ou programme appelant exécutable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top