8
votes

JVM ne peut pas utiliser la grande mémoire de la page car elle n'a pas assez de privilège pour verrouiller les pages en mémoire

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

jvm ne peut pas utiliser la mémoire de grande page car elle n'en a pas assez Privilège de verrouiller les pages en mémoire

Les paramètres sont:

SET JAVA_OPTS = -XMS20G -XMX20G -XX: + USECONCMARKSWEEPGC -XX: + USEPARNEWGC -Xx: + uselargepages -duser.timezone = "GMT"% DEBUG%

Ceci s'est produit sur Windows Server 2003.


1 commentaires

Cela se passe sur Windows 2003


3 Réponses :


8
votes

Googling sur l'erreur mène au hotspot / src /os/win32/vm/os_win32.cpp Fichier source à OpenJDK-6 Wich contient 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.


1 commentaires

docs.microsoft.com/en-us/sql/database-engine/configure-windo ws / ... - S'applique à Windows Server 2016 et Windows 10 (utilise GPEDIT. MSC)



0
votes

Seul Windows Server 2003 prend en charge la mémoire de la grande page. Afin de l'utiliser, l'administrateur doit d'abord attribuer un privilège supplémentaire à l'utilisateur qui exécutera l'application: 1. Sélectionnez Panneau de configuration -> Outils d'administration -> Politique de sécurité locale 2. Sélectionnez les stratégies locales -> Affectation des droits des utilisateurs 3. Double-cliquez sur "Verrouiller les pages en mémoire", ajoutez des utilisateurs et / ou des groupes 4. Redémarrez la machine


2 commentaires

Java.sun.com/javase/technologies/hotspot/largememorory.jsp Seul Windows Server 2003 prend en charge celui entre la famille Windows. Solaris et Linux les soutiennent aussi.


Comment la grande mémoire bénéficie-t-elle d'une JVM? Pourquoi est-il important de verrouiller un processus dans la mémoire physique?



2
votes

J'ai fait face à ce que seules les configurations définies ci-dessous ne suffisent pas:

Windows Large Page Support est disponible sous Windows 2003. Pour utiliser
Grande mémoire de page, l'administrateur doit d'abord attribuer un privilège supplémentaire
à l'utilisateur:

  • Sélectionnez Panneau de configuration -> Outils d'administration -> Politique de sécurité locale
  • Sélectionner des stratégies locales -> Affectation des droits des utilisateurs
  • Double-cliquez sur "Verrouiller les pages en mémoire", ajoutez des utilisateurs et / ou des groupes
  • Redémarrez

    Remarque Les étapes ci-dessus sont nécessaires pour l'administrateur également, en tant qu'administrateurs
    Par défaut, ne disposez pas du privilège de verrouiller les pages en mémoire.

    Le programme qui appellera l'interpréteur Java (Java programme.java ) doit être appelé avec des rulles administratives. Exemple: Eclipse, NetBeans, CMD, etc. Dans Windows Fabriqué après 2003, vous devez effectuer des paramètres ci-dessus, et après que vous puissiez cliquer avec le bouton droit pour ouvrir le menu et choisir "Exécuter en tant qu'adnistrator" sur l'icône ou programme d'appelant exécutable.


0 commentaires