JVM无法使用大页面内存,因为它没有足够的权限来锁定内存中的页面

时间:2009-10-23 20:27:38

标签: java jvm paging

我想知道如何协调以下错误?

  

JVM无法使用大页面内存,因为它没有足够的内存   将页面锁定在内存中的权限

设置为:

  

设置JAVA_OPTS = -Xms20g -Xmx20g -XX:+ UseConcMarkSweepGC -XX:+ UseParNewGC   -XX:+ UseLargePages -Duser.timezone =“GMT”%DEBUG%

这发生在Windows Server 2003上。

3 个答案:

答案 0 :(得分:5)

在错误上搜索导致openjdk-6中的hotspot/src/os/win32/vm/os_win32.cpp源文件,其中包含以下注释:

// 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 :(得分:1)

我只面对以下设置配置是不够的:

  

Windows 2003上提供Windows大页面支持。为了使用
  大页面内存,管理员必须先分配额外的权限   给用户:

     
    
        
  • 选择控制面板 - >管理工具 - >地方安全政策
  •     
  • 选择本地政策 - >用户权利分配
  •     
  • 双击“锁定内存中的页面”,添加用户和/或组
  •     
  • 重启
  •     
  
     

请注意,管理员也需要执行上述步骤,作为管理员   默认情况下,没有权限将页面锁定在内存中。

必须使用管理规则调用将调用java解释器(java program.java )的程序。示例:Eclipse,Netbeans,cmd等在2003年之后制作的Windows中,您需要进行上述设置,然后单击右键打开菜单并在图标上选择“以管理员身份运行”或可执行的来电程序。

答案 2 :(得分:0)

只有Windows Server 2003支持大页面内存。要使用它,管理员必须首先为将运行该应用程序的用户分配其他权限: 1.选择控制面板 - >管理工具 - >本地安全政策 2.选择本地政策 - >用户权利分配 3.双击“锁定内存中的页面”,添加用户和/或组 4.重启机器