OutOfMemoryError with Maven
NadChel opened this issue · 1 comments
NadChel commented
I try to introduce Dagger in our Swing project, but so far it's not very successful. The build fails with OutOfMemoryError
We have a "common lib" proprietary dependency that is declared in our modules. It has 3700+ sources, but there is very little DI code at this point
Here's the pom of "common lib":
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArguments>
<XDignore.symbol.file/>
</compilerArguments>
<fork>true</fork>
<annotationProcessorPaths>
<path>
<groupId>com.google.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>${dagger.ver}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
Maven is 3.11, Dagger is 2.51.1. Java 8
The heap size seems more than sufficient
C:\Users\zolotarevsa> java -XX:+PrintFlagsFinal -version | findstr MaxHeapSize
uintx MaxHeapSize := 4278190080 {product}
openjdk version "1.8.0_282"
OpenJDK Runtime Environment (build 1.8.0_282-b08)
OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)
The error message:
java: java.lang.OutOfMemoryError: GC overhead limit exceeded
java.lang.RuntimeException: java.lang.OutOfMemoryError: GC overhead limit exceeded
at com.sun.tools.javac.main.Main.compile(Main.java:559)
at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)
at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)
at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:239)
at org.jetbrains.jps.javac.ExternalJavacProcess.compile(ExternalJavacProcess.java:189)
at org.jetbrains.jps.javac.ExternalJavacProcess.access$400(ExternalJavacProcess.java:28)
at org.jetbrains.jps.javac.ExternalJavacProcess$CompilationRequestsHandler$1.run(ExternalJavacProcess.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.Arrays.copyOfRange(Arrays.java:3664)
at java.lang.StringBuffer.toString(StringBuffer.java:669)
at java.net.URI.toString(URI.java:1945)
at java.net.URI.<init>(URI.java:669)
at java.net.URI.<init>(URI.java:774)
at org.jetbrains.jps.javac.ZipFileObject.createUri(ZipFileObject.java:39)
at org.jetbrains.jps.javac.ZipFileObject.<init>(ZipFileObject.java:21)
at org.jetbrains.jps.javac.DefaultFileOperations$ZipArchive$2.fun(DefaultFileOperations.java:231)
at org.jetbrains.jps.javac.DefaultFileOperations$ZipArchive$2.fun(DefaultFileOperations.java:228)
at org.jetbrains.jps.javac.Iterators$10.next(Iterators.java:235)
at org.jetbrains.jps.javac.Iterators$6.next(Iterators.java:160)
at com.sun.tools.javac.api.ClientCodeWrapper.wrapJavaFileObjects(ClientCodeWrapper.java:140)
at com.sun.tools.javac.api.ClientCodeWrapper$WrappedJavaFileManager.list(ClientCodeWrapper.java:231)
at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:2750)
at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:2446)
at com.sun.tools.javac.jvm.ClassReader.access$000(ClassReader.java:76)
at com.sun.tools.javac.jvm.ClassReader$1.complete(ClassReader.java:240)
at com.sun.tools.javac.code.Symbol.complete(Symbol.java:574)
at com.sun.tools.javac.jvm.ClassReader.completeOwners(ClassReader.java:2458)
at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:2435)
at com.sun.tools.javac.jvm.ClassReader.access$000(ClassReader.java:76)
at com.sun.tools.javac.jvm.ClassReader$1.complete(ClassReader.java:240)
at com.sun.tools.javac.code.Symbol.complete(Symbol.java:574)
at com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1037)
at com.sun.tools.javac.code.Symbol$ClassSymbol.members(Symbol.java:978)
at com.sun.tools.javac.jvm.ClassReader$AnnotationDeproxy.findAccessMethod(ClassReader.java:1769)
at com.sun.tools.javac.jvm.ClassReader$AnnotationDeproxy.deproxyCompound(ClassReader.java:1759)
at com.sun.tools.javac.jvm.ClassReader$AnnotationDeproxy.deproxyCompoundList(ClassReader.java:1748)
at com.sun.tools.javac.jvm.ClassReader$AnnotationCompleter.run(ClassReader.java:1943)
at com.sun.tools.javac.comp.Annotate.flush(Annotate.java:143)
at com.sun.tools.javac.comp.Annotate.enterDone(Annotate.java:129)
at com.sun.tools.javac.comp.Enter.complete(Enter.java:512)
It may have to do with IntelliJ, but in case it's not (after all, it didn't occur before the introduction of Dagger), I decided to post this
I noticed this earlier issue, but it concerns an older version of Dagger, Kotlin, and Gradle
NadChel commented