maven项目compile package时报系统资源不足。java.lang.OutOfMemoryError: Java heap space(内存溢出)

今天在做项目过程中发生已了一件意料之外的事情,原本好好的系统合并代码后本地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的情况使用。
    maven项目compile package时报系统资源不足。java.lang.OutOfMemoryError: Java heap space(内存溢出)_第1张图片
  • 修改系统pom文件配置针对当前项目调整(博主推荐)

  
    org.apache.maven.plugins
    maven-compiler-plugin
    3.1
    
      true
      512m
      1048m
    
  

总结:MAVEN默认的内存基本能满足常规项目的使用需求,当项目规模越来越大时就需要手动调整MAVEN内存大小。博主就是因为合并代码后,系统规模正好越过临界线。

你可能感兴趣的:(Java,Maven,JVM,pom,Spring,内存溢出,MAVEN,package,Java,heap,space)