2009-10-23 16 views
5

Zastanawiam się, w jaki sposób mogę pogodzić następujący błąd?JVM nie może używać dużej pamięci strony, ponieważ nie ma wystarczających uprawnień do blokowania stron w pamięci

JVM nie można używać dużą pamięć stronę, ponieważ nie ma wystarczającej ilości przywilej blokowania stron w pamięci

ustawienia są:

zestaw JAVA_OPTS = -Xms20g -Xmx20g -XX : + UseConcMarkSweepGC -XX: + UseParNewGC -XX: + UseLargePages -Duser.timezone = "strefie" % DEBUGOWANY%

To zdarzyło się w systemie Windows Server 2003.

+3

Co to jest system operacyjny? – OscarRyz

+0

To się dzieje w systemie Windows 2003 –

Odpowiedz

0

Tylko system Windows Server 2003 obsługuje dużą pamięć strony. Aby z niego skorzystać, administrator musi najpierw przypisać dodatkowe uprawnienia użytkownikowi, który będzie uruchamiał aplikację: 1. wybierz Panel sterowania -> Narzędzia administracyjne -> Lokalna polityka bezpieczeństwa 2. wybierz Zasady lokalne -> Przypisywanie praw użytkownika 3. dwukrotnie kliknij „Blokowanie stron w pamięci”, dodawać użytkowników i/lub grupy 4. Uruchom ponownie komputer

+0

http://java.sun.com/javase/technologies/hotspot/largememory.jsp Tylko system Windows Server 2003 obsługuje tę funkcję wśród rodziny okien. Solaris i Linux też je wspierają. –

+0

jak duża pamięć korzysta z jvm? dlaczego tak ważne jest zablokowanie procesu w pamięci fizycznej? – djangofan

5

Googling na błąd prowadzi do pliku źródłowego w openjdk hotspot/src/os/win32/vm/os_win32.cpp-6 wich zawiera następujący komentarz:

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

Jeśli używasz Windows 2003, to może pomóc . Jeśli nie, nie mam żadnych innych sugestii.

1

wychodził że tylko zestaw konfiguracje poniżej nie wystarcza:

Okna duże wsparcie strona jest dostępna w systemie Windows 2003. Aby skorzystać z dużej pamięci strony
, administrator musi uruchomić t przypisać dodatkowy przywilej
do użytkownika:

  • wybierz Panel sterowania -> Narzędzia administracyjne -> Zasady zabezpieczeń lokalnych
  • wybrać Zasady lokalne -> Przypisywanie praw użytkownika
  • double click " Zablokuj strony w pamięci ", dodaj użytkowników i/lub grupy
  • ponownie uruchom

Uwaga powyższe kroki są potrzebne również administratorowi, ponieważ domyślnie administratorzy
nie mają uprawnień do blokowania stron w pamięci.

Program kto wezwie interpreter języka Java (Java program.java) musi być wywołana z Rulles administracyjnych. Przykład: Eclipse, Netbeans, cmd itp.W systemie Windows utworzonym po 2003 r. Należy wykonać powyższe ustawienia, a po kliknięciu prawym przyciskiem myszy można otworzyć menu i wybrać "uruchom jako admnistrator" na ikonie lub wykonywanym programie wywołującym.

Powiązane problemy