2009-05-26 25 views
16

tôi chạy mã Java với lệnh sau: Công suất RAMTránh Initial Memory Heap Kích Lỗi

$ java -Xms4G -Xmx4G myjavacode 

cpu của tôi là 6GB.

Tuy nhiên nó luôn luôn thất bại trong việc thực thi đem lại cho tôi nhắn lỗi này:

Invalid initial heap size: -Xms5G 
The specified size exceeds the maximum representable size. 
Could not create the Java virtual machine 

Có cách nào để thiết lập tùy chọn Java để chúng tôi có thể thực thi mã?

+0

Bạn đang sử dụng JVM nào? –

+0

@roland: jdk1.6.0_14/bin/java – neversaint

+4

Bạn có chắc là bạn đang chạy JVM 64 bit không? Đó là bộ nhớ nhiều không thể được giải quyết trong 32 bit. – diciu

Trả lời

15

Bạn đã vượt quá kích thước heap tối đa của JVM. Đây là cả hai JVM và OS phụ thuộc. Trong hầu hết các hệ thống 32 bit, giá trị tối đa sẽ là 2Gb, bất kể bộ nhớ vật lý có sẵn.

+3

Trên cửa sổ 32 bit, giới hạn gần 1.3 GB –

+0

Tôi gặp lỗi 'Kích thước heap ban đầu không hợp lệ: -Xms256m -Xmx512m' trên hệ thống có RAM 16 GB (miễn phí 14GB) –

3

Thực ra, kích thước bộ nhớ tối đa trên các hệ thống 32 bit có thể thay đổi, là bất kỳ thứ gì lên đến 4 GB, nhưng 2 GB là một giá trị chung. Nó thường có thể liên kết lại hạt nhân của bạn để tăng lên 3 hoặc 3,5 GB. Vấn đề, tất nhiên, là bạn chỉ không có không gian địa chỉ để ánh xạ thêm bộ nhớ. Bạn đã thử một máy 64-bit chưa?

Ngoài ra, hãy nhớ đặt ulimit của bạn cao hơn trước khi bạn thực hiện việc này.

9

Theo mặc định, Java sẽ chạy ở chế độ 32 bit. Hãy chắc chắn để cho nó tùy chọn -d64 để đưa nó vào chế độ 64 bit. Khi ở chế độ 64 bit, bạn không nên gặp rắc rối khi phân bổ một JVM 6 GB.

+2

Ý bạn là JVM 64 bit cũng chạy ở chế độ 32 bit theo mặc định? – Pacerier

+0

vấn đề của tôi đã được giải quyết với tham số -d64 này trên Solaris Sparc 64bit với Java (TM) SE Runtime Environment (xây dựng 1.6.0_21-b06) java. cảm ơn –

Các vấn đề liên quan