JVM не может использовать большую память страниц, потому что у нее недостаточно прав для блокировки страниц в памяти - PullRequest
5 голосов
/ 24 октября 2009

Интересно, как можно исправить следующую ошибку?

JVM не может использовать большую память страницы, потому что ей не хватает привилегия блокировать страницы в памяти

Настройки:

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

Это произошло в Windows Server 2003.

Ответы [ 3 ]

5 голосов
/ 24 октября 2009

Поиск в Google по ошибке приводит к исходному файлу hotspot / src / os / win32 / vm / os_win32.cpp в openjdk-6, который содержит следующий комментарий:

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

Если вы используете Windows 2003, это может помочь. Если нет, у меня нет других предложений.

1 голос
/ 15 января 2015

Я сталкивался с тем, что недостаточно только указанных ниже настроек:

Поддержка больших страниц Windows доступна в Windows 2003. Чтобы использовать
Большая страница памяти, администратор должен сначала назначить дополнительную привилегию
пользователю:

  • выберите Панель управления -> Администрирование -> Локальная политика безопасности
  • выберите Локальные политики -> Назначение прав пользователя
  • дважды щелкните «Блокировать страницы в памяти», добавьте пользователей и / или группы
  • перезагрузка

Обратите внимание, что указанные выше действия необходимы и для администратора, и для администратора.
по умолчанию не имеют права блокировать страницы в памяти.

Программа, которая будет вызывать интерпретатор Java (java program.java ), должна вызываться с административными правилами. Пример: Eclipse, Netbeans, cmd и т. Д. В Windows, созданной после 2003 года, вам нужно выполнить настройки выше, а затем нажать правую кнопку, чтобы открыть меню, и выбрать «Запуск от имени администратора» на значке или исполняемая программа вызывающего абонента.

0 голосов
/ 24 октября 2009

Только Windows Server 2003 поддерживает большую память страниц. Чтобы использовать его, администратор должен сначала назначить дополнительную привилегию пользователю, который будет запускать приложение: 1. выберите Панель управления -> Администрирование -> Локальная политика безопасности 2. выберите Локальные политики -> Назначение прав пользователя 3. дважды щелкните «Блокировать страницы в памяти», добавьте пользователей и / или группы 4. перезагрузите машину

...