Friday, 29 June 2018

OutOfMemoryError: Increase heap size or lower gwt

Issue

You may encounter the following exception during the maven build of gwt project:


  Compiling 1 permutation
  Compiling permutation 0...
  [ERROR] OutOfMemoryError: Increase heap size or lower gwt.jjs.maxThreads
  java.lang.OutOfMemoryError: Java heap space
  at java.util.HashMap.resize(HashMap.java:462)
  at java.util.HashMap.addEntry(HashMap.java:755)
  at java.util.HashMap.put(HashMap.java:385)
  at java.util.HashSet.add(HashSet.java:200)
  at com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer$RescueVisitor.rescue(ControlFlowAnalyzer.java:639)
  at com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer$RescueVisitor.visit(ControlFlowAnalyzer.java:438)
  at com.google.gwt.dev.jjs.ast.JParameterRef.traverse(JParameterRef.java:45)
  at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:144)
  at com.google.gwt.dev.jjs.ast.JVisitor.acceptImmutable(JVisitor.java:152)
  at com.google.gwt.dev.jjs.ast.JMethodCall.visitChildren(JMethodCall.java:250)
  at com.google.gwt.dev.jjs.ast.JNewInstance.traverse(JNewInstance.java:84)
  at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:125)
  at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:120)
  at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:116)
  at com.google.gwt.dev.jjs.ast.JMethodCall.visitChildren(JMethodCall.java:248)
  at com.google.gwt.dev.jjs.ast.JMethodCall.traverse(JMethodCall.java:241)
  at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:125)
  at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:120)
  at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:116)
  at com.google.gwt.dev.jjs.ast.JRunAsync.traverseOnSuccess(JRunAsync.java:101)
  at com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer.traverseFromRunAsync(ControlFlowAnalyzer.java:1008)
  at com.google.gwt.dev.jjs.impl.CodeSplitter.computeAllButOneCfas(CodeSplitter.java:716)
  at com.google.gwt.dev.jjs.impl.CodeSplitter.mapExclusiveAtoms(CodeSplitter.java:976)
  at com.google.gwt.dev.jjs.impl.CodeSplitter.determineExclusivity(CodeSplitter.java:757)
  at com.google.gwt.dev.jjs.impl.CodeSplitter.execImpl(CodeSplitter.java:804)
  at com.google.gwt.dev.jjs.impl.CodeSplitter.exec(CodeSplitter.java:259)
  at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.compilePermutation(JavaToJavaScriptCompiler.java:401)
  at com.google.gwt.dev.jjs.UnifiedAst.compilePermutation(UnifiedAst.java:134)
  at com.google.gwt.dev.CompilePerms.compile(CompilePerms.java:195)
  at com.google.gwt.dev.ThreadedPermutationWorkerFactory$ThreadedPermutationWorker.compile(ThreadedPermutationWorkerFactory.java:49)
  at com.google.gwt.dev.PermutationWorkerFactory$Manager$WorkerThread.run(PermutationWorkerFactory.java:73)
  at java.lang.Thread.run(Thread.java:662)
          [ERROR] Out of memory; to increase the amount of memory, use the -Xmx flag at startup (java -Xmx128M ...)
       [ERROR] Unrecoverable exception, shutting down
 com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries)
  at com.google.gwt.dev.ThreadedPermutationWorkerFactory$ThreadedPermutationWorker.compile(ThreadedPermutationWorkerFactory.java:56)
  at com.google.gwt.dev.PermutationWorkerFactory$Manager$WorkerThread.run(PermutationWorkerFactory.java:73)
  at java.lang.Thread.run(Thread.java:662)
       [ERROR] Not all permutation were compiled , completed (0/1)

Solution 1

To resolve this exception, you can setting, increasing memory values, the "MAVEN_OPTS" as environment variable and retry the maven build.
 MAVEN_OPTS="-Xmx2048m -XX:MaxPermSize=1024m"

Solution 2

Add "extraJvmArgs" tag under configuration tag for gwt-maven-plugin as shown in the next example:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>gwt-maven-plugin</artifactId>
            <dependencies>
                <dependency>
                    <groupId>com.google.gwt</groupId>
                    <artifactId>gwt-user</artifactId>
                    <version>${gwtVersion}</version>
                </dependency>
                <dependency>
                    <groupId>com.google.gwt</groupId>
                    <artifactId>gwt-dev</artifactId>
                    <version>${gwtVersion}</version>
                </dependency>
                <dependency>
                    <groupId>com.google.gwt</groupId>
                    <artifactId>gwt-servlet</artifactId>
                    <version>${gwtVersion}</version>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
  .....
                <extraJvmArgs>-Xmx896M -Xms896m -XX:PermSize=64m -XX:MaxPermSize=128m</extraJvmArgs>
  .....
            </configuration>
        </plugin>

Technology stack

I used these solutions using:
  • java 1.6
  • gwt 2.5.1
  • maven 3.2.1

No comments:

Post a Comment

Welcome

Hello everybody, Welcome in my blog called "Information technology archive". Obviously the topics will be related to Informatio...