2009-12-17 19 views
31

Tôi đang biên dịch một dự án mã nguồn mở với "mvn install" nhưng đã kết thúc với java.lang.OutOfMemoryError: Java heap space. Tôi đã cố gắng để thực hiện java -Xmx256m nhưng đầu ra là tóm tắt java mà chỉ ra đó là một lệnh không hợp lệ.Maven ném "java.lang.OutOfMemoryError"

Tôi đang sử dụng jdk1.5.0_08, mọi ý tưởng tại sao điều này đang xảy ra?

Cảm ơn,

+2

Đó là câu hỏi mở;) Câu trả lời có thể là MAVEN_OPTS = "- Xmx513m" vv;) – cetnar

Trả lời

50

Đặt biến môi trường:

MAVEN_OPTS="-Xmx512m" 
+12

Đôi khi cũng là tốt để mở rộng dung lượng bộ nhớ perm - MAVEN_OPTS = "- Xmx512m -XX: MaxPermSize = 256M" – cetnar

+2

MAVEN_OPTS Thiết riêng là không đủ nếu xây dựng thất bại trong khi chạy thử nghiệm đơn vị. Trong những trường hợp như vậy, bạn có thể phải cấu hình "argLine" của maven-surefire-plugin một cách rõ ràng. –

+1

Tôi nhận được lỗi này khi cài đặt mvn, sử dụng "mvn install -DMAVEN_OPTS = -Xmx1024m" đã giải quyết được vấn đề của tôi! – Surekha

18

Nó phụ thuộc vào JVM dụ đòi hỏi nhiều bộ nhớ hơn. Một ví dụ, nếu kiểm tra được chia hai (theo mặc định), và thất bại do OutOfMemoryError sau đó thử cấu hình plugin mà tung ra họ:

 <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <argLine>-Xmx1024m</argLine> 
      </configuration> 
     </plugin> 
-5

tôi có kinh nghiệm cùng một vấn đề. Theo this link nó có thể giúp thay đổi thực hiện jvm - điều này có thể được thực hiện bằng cách thiết lập biến hệ thống JAVA_HOME.

Hãy thử ví dụ trong liên kết nêu ibm JVM hoặc oracle JRockit:

SET JAVA_HOME=C:\bea10\jrockit160_22 
mvn install 
9

Không chỉ bộ nhớ heap. Bạn phải tăng kích thước perm cũng để giải quyết ngoại lệ đó trong maven sử dụng các biến này trong biến môi trường.

tên biến: MAVEN_OPTS
giá trị biến: -Xmx512m -XX: MaxPermSize = 256M

+0

Làm thế nào bạn có thể nhận được giá trị hiện tại của 'Xmx' và' MaxPermSize'? Sau khi tất cả, tôi không thể tăng các giá trị mà không biết những gì họ đã được thiết lập. – ArtOfWarfare

+0

Tôi không chắc về MaxPermSize, nhưng Xmx thường là 1/4 của bộ nhớ vật lý. Một lần nữa, điều này có thể thay đổi tùy thuộc vào việc triển khai JRE và/hoặc "máy chủ", chế độ "máy khách" của JVM. –

+0

-bash: xuất: '-XX: MaxPermSize = 256m ': không phải là số nhận dạng hợp lệ – user2568374

0

Hoặc sử dụng set MAVEN_OPTS="-XX:MaxPermSize=256m" khi chạy từ dấu nhắc lệnh.

-1

Cố gắng thay đổi hoặc cập nhật cài đặt Maven của bạn. Tôi đã có vấn đề này nhưng tôi đã giải quyết nó bằng cách nâng cấp Maven (3.0.5 đến 3.3.3).

3

Đôi khi, nếu bạn sử dụng các chương trình khác bên trong maven, như trong kiểm tra intration hoặc chắc chắn, MAVEN_OPTS là không đủ. Ngoài MAVEN_OPTS, hãy thử sử dụng JAVA_TOOL_OPTIONS. Điều này đã làm các trick cho tôi trong Maven khi chạy một số xét nghiệm hội nhập:

export JAVA_TOOL_OPTIONS="-Xmx2048m -XX:MaxPermSize=1024m -Xms2048m" 

tham khảo: osx maven running tests Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"

0

tôi luôn luôn sử dụng này với vỏ của tôi trên ubuntu:

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=500m" 
Các vấn đề liên quan