2009-10-23 10 views
5

Tôi tự hỏi làm cách nào để có thể điều chỉnh lỗi sau?JVM không thể sử dụng bộ nhớ trang lớn vì nó không có đủ đặc quyền để khóa các trang trong bộ nhớ

JVM không thể sử dụng bộ nhớ trang lớn bởi vì nó không có đủ đặc quyền để khóa các trang trong bộ nhớ

Các thiết lập là:

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

Điều này xảy ra trên Windows Server 2003.

+3

Hệ điều hành là gì? – OscarRyz

+0

Điều này đang xảy ra trên Windows 2003 –

Trả lời

0

Chỉ Windows Server 2003 hỗ trợ bộ nhớ trang lớn. Để sử dụng nó, trước tiên quản trị viên phải gán đặc quyền bổ sung cho người dùng sẽ chạy ứng dụng: 1. chọn Bảng điều khiển -> Công cụ quản trị -> Chính sách bảo mật địa phương 2. chọn Chính sách địa phương -> Chuyển nhượng quyền người dùng 3. double click "trang Khóa trong ký ức", thêm người dùng và/hoặc nhóm 4. khởi động lại máy

+0

http://java.sun.com/javase/technologies/hotspot/largememory.jsp Chỉ Windows Server 2003 hỗ trợ trong số các cửa sổ gia đình. Solaris và Linux cũng hỗ trợ chúng. –

+0

Bộ nhớ lớn có lợi thế như thế nào đối với jvm? tại sao nó quan trọng để khóa một quá trình vào bộ nhớ vật lý? – djangofan

5

Googling về lỗi dẫn đến tập tin hotspot/src/os/win32/vm/os_win32.cpp nguồn trong openjdk-6 Mà chứa những nhận xét sau đây:

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

Nếu bạn đang sử dụng Windows 2003, điều này có thể giúp . Nếu không, tôi không có bất cứ gợi ý nào khác.

1

tôi phải đối mặt mà chỉ thiết lập các cấu hình dưới đây là không đủ:

Windows hỗ trợ trang lớn có sẵn trên Windows 2003. Để sử dụng
bộ nhớ trang lớn, quản trị viên phải linh hoạt t gán đặc quyền thêm
cho người sử dụng:

  • chọn Control Panel -> Administrative Tools -> Local Security Policy
  • chọn Local Policies -> Quyền tài Phân
  • nhấp chuột kép " Khóa trang trong bộ nhớ ", thêm người dùng và/hoặc nhóm
  • khởi động lại

Lưu ý rằng các bước trên cũng cần thiết cho quản trị viên, vì quản trị viên
theo mặc định không có đặc quyền khóa trang trong bộ nhớ.

Chương trình người sẽ gọi thông dịch java (java program.java) phải được gọi với rulles hành chính. Ví dụ: Eclipse, Netbeans, cmd, v.v.Trong Windows được tạo sau năm 2003, bạn cần thực hiện các cài đặt ở trên và sau khi bạn có thể nhấp vào nút bên phải để mở menu và chọn "chạy dưới dạng admnistrator" trên biểu tượng hoặc chương trình người gọi có thể thực thi.