今天在做项目过程中发生已了一件意料之外的事情,原本好好的系统合并代码后本地DEBUG系统正常使用,当准备打包(WAR)发布时出现了如下错误:
系统资源不足。
有关详细信息, 请参阅以下堆栈跟踪。
java.lang.OutOfMemoryError: Java heap space
at com.sun.tools.javac.util.ArrayUtils.ensureCapacity(ArrayUtils.java:60)
at com.sun.tools.javac.util.SharedNameTable.fromUtf(SharedNameTable.java:130)
at com.sun.tools.javac.util.Name$Table.fromUtf(Name.java:212)
at com.sun.tools.javac.util.Names.fromUtf(Names.java:338)
at com.sun.tools.javac.jvm.ClassWriter.writePool(ClassWriter.java:437)
at com.sun.tools.javac.jvm.ClassWriter.writeClassFile(ClassWriter.java:1750)
at com.sun.tools.javac.jvm.ClassWriter.writeClass(ClassWriter.java:1621)
at com.sun.tools.javac.main.JavaCompiler.genCode(JavaCompiler.java:746)
at com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1572)
at com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1536)
at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:901)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)
at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)
at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:125)
at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:169)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:825)
at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
网上一顿搜索猛如虎的到如下解决方案,特总结如下方便以后处理
- 修改mvn.bat文件:加入了“set MAVEN_OPTS= -Xms512m -Xmx512m ”。此方式适用于IDE使用本地安装的MAVEN方式
- 修改环境变量:在环境变量中添加“MAVEN_OPTS : -Xms512m -Xmx512m”。此方式的优势在于重装MAVEN后任然有效
- 修改IDEA配置:File-Settings-Build,Execution,Deployment-Build Tools-Maven-Runner-VM Options设置值“-Xms512m -Xmx512m”。此方式针对使用IDEA中自带MAVEN的情况使用。
- 修改系统pom文件配置针对当前项目调整(博主推荐)
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork>
<meminitial>512m</meminitial>
<maxmem>1048m</maxmem>
</configuration>
</plugin>
</plugins>