2010-01-12 35 views
9

Tôi đang sử dụng trang web Maven: chạy để tạo ra một mã số bảo hiểm Cobertura ...Maven Cobertura OutOfMemoryError

Sau đây là cấu hình pom.xml của tôi cho Cobertura:

<reporting> 
    ... 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>cobertura-maven-plugin</artifactId> 
      <version>2.3</version> 
     </plugin> 
    </plugins> 
</reporting> 

Tuy nhiên tôi nhận OutOfMemoryError tại cuối trang: chạy. Vui lòng đề xuất cách loại bỏ lỗi này. (Tôi đã thử tất cả những -Xmx, tùy chọn XX ...)

Exception in thread "Thread-0" java.lang.OutOfMemoryError: Java heap space 
     at sun.reflect.GeneratedSerializationConstructorAccessor74.newInstance(Unknown Source) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
     at java.io.ObjectStreamClass.newInstance(ObjectStreamClass.java:924) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1737) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 
     at java.util.HashMap.readObject(HashMap.java:1030) 
     at sun.reflect.GeneratedMethodAccessor347.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) 
     at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:480) 
     at net.sourceforge.cobertura.coveragedata.CoverageDataContainer.readObject(CoverageDataContainer.java:373) 
     at sun.reflect.GeneratedMethodAccessor348.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 
     at java.util.HashMap.readObject(HashMap.java:1030) 
     at sun.reflect.GeneratedMethodAccessor347.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) 
+0

Dupe: http://stackoverflow.com/questions/1920059/maven -throws-java-lang-outofmemoryerror –

Trả lời

15

Sử dụng tài sản này trong pom.xml của bạn:

<project> 
... 
<build> 
... 
</build> 

<properties> 
    <cobertura.maxmem>256M</cobertura.maxmem> 
</properties> 

</project> 
+0

Tôi hiểu rồi! Thêm 512m trong pom.xml đã giải quyết được sự cố của tôi. Cảm ơn tất cả mọi người – KrishPrabakar

+0

Sau đó, hãy cân nhắc bỏ phiếu và chấp nhận câu trả lời từ Jean-Philippe Briend. – ewernli

1

Bạn hãy thử một cái gì đó giống như export MAVEN_OPTS=-Xmx1024m (Hoặc giá trị cao nhất phù hợp với máy tính của bạn)?

Nếu bạn vẫn không có đủ bộ nhớ để chạy maven, thì tôi khuyên bạn nên tắt plugin khác và loại trừ một số lớp khỏi phạm vi kiểm tra để kiểm tra xem đó có phải là vấn đề về bộ nhớ hay không.

<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>cobertura-maven-plugin</artifactId> 
<configuration> 
    <instrumentation> 
    <ignores> 
     <ignore>com.example.boringcode.*</ignore> 
    </ignores> 
    <excludes> 
     <exclude>com/example/dullcode/**/*.class</exclude> 
     <exclude>com/example/**/*Test.class</exclude> 
    </excludes> 
    </instrumentation> 
</configuration> 

http://mojo.codehaus.org/cobertura-maven-plugin/usage.html

EDIT

ý tưởng khác:

Đặt thuộc tính sau (xem cobertura plugin properties)

-Dmaven.cobertura.report.maxmemory=xxx 
-Dmaven.cobertura.instrumentation.maxmemory=xxx 

Hãy thử sử dụng nĩa hoặc tăng bộ nhớ với những điều sau đây. Tôi không chắc liệu nó hoạt động cho cobertura, nhưng dường như làm việc cho junit. Đoạn từ page này:

<plugin> 
... 
<configuration> 
<forkMode>pertest</forkMode> 
</configuration> 
</plugin> 

hoặc

<plugin> 
... 
<configuration> 
... 
<argLine>-Xmx512m -XX:MaxPermSize=256m</argLine> 
</configuration> 
</plugin> 
+0

Đây là MAVEN_OPTS của tôi: -XX: MaxPermSize = 512m -Xms128m -Xmx600m (Tôi đã đổi thành -Xmx1024m nhưng tôi gặp lỗi sau: Lỗi xảy ra trong quá trình khởi tạo VM Không thể dành đủ dung lượng cho đối tượng đống Không thể tạo máy ảo Java.) – KrishPrabakar

+0

Hi ewernli, Tôi đã thử nhưng vẫn tồn tại vấn đề ... đây là thay đổi tôi đã thực hiện trong pom.xml : (tôi loại trừ các gói lớn nhất) \t \t \t \t \t \t com/xxx/**/* Test.class \t \t com/xxx/yyy/Đánh giá/**/* .class \t \t com/xxx/yyy/common/**/*.lớp \t \t \t \t KrishPrabakar

+0

Tôi hiểu rồi! Thêm 512m trong pom.xml đã giải quyết được sự cố của tôi. Cảm ơn mọi người! – KrishPrabakar

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