JVM non può utilizzare una memoria di pagine di grandi dimensioni perché non dispone di privilegi sufficienti per bloccare le pagine in memoria

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

  •  06-07-2019
  •  | 
  •  

Domanda

Mi chiedo come posso conciliare il seguente errore?

  

JVM non può usare una grande memoria della pagina perché non ha abbastanza   privilegio di bloccare le pagine in memoria

Le impostazioni sono:

  

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

Questo è successo su Windows Server 2003.

È stato utile?

Soluzione 3

Solo Windows Server 2003 supporta memoria di pagine di grandi dimensioni. Per poterlo utilizzare, l'amministratore deve prima assegnare un privilegio aggiuntivo all'utente che eseguirà l'applicazione: 1. seleziona Pannello di controllo - > Strumenti di amministrazione - > Politica di sicurezza locale 2. seleziona Politiche locali - > Assegnazione dei diritti dell'utente 3. fai doppio clic su "Blocca pagine in memoria", aggiungi utenti e / o gruppi 4. riavviare il computer

Altri suggerimenti

Cercare su Google l'errore porta al hotspot / src / os / win32 / vm / os_win32.cpp file sorgente in openjdk-6 che contiene il seguente commento:

// 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 stai usando Windows 2003, questo potrebbe aiutare. In caso contrario, non ho altri suggerimenti.

Ho riscontrato che solo le seguenti configurazioni non sono sufficienti:

  

Il supporto per pagine di grandi dimensioni di Windows è disponibile su Windows 2003. Per poter utilizzare
  grande memoria della pagina, l'amministratore deve prima assegnare un privilegio aggiuntivo
  per l'utente:

     
    
        
  • seleziona Pannello di controllo - > Strumenti di amministrazione - > Politica di sicurezza locale
  •     
  • seleziona Politiche locali - > Assegnazione dei diritti dell'utente
  •     
  • fai doppio clic su " Blocca pagine in memoria ", aggiungi utenti e / o gruppi
  •     
  • riavvio
  •     
  
     

Nota che i passaggi precedenti sono necessari anche per l'amministratore, in quanto amministratori
  per impostazione predefinita non hanno il privilegio di bloccare le pagine in memoria.

Il programma che chiamerà l'interprete java (java program.java ) deve essere chiamato con regole amministrative. Esempio: Eclipse, Netbeans, cmd, ecc. In Windows creato dopo il 2003, è necessario eseguire le impostazioni sopra e dopo aver fatto clic con il tasto destro per aprire il menu e scegliere " esegui come amministratore " sul icona o programma chiamante eseguibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top