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

5 篇文章 0 订阅
3 篇文章 0 订阅

今天在做项目过程中发生已了一件意料之外的事情,原本好好的系统合并代码后本地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>
总结:MAVEN默认的内存基本能满足常规项目的使用需求,当项目规模越来越大时就需要手动调整MAVEN内存大小。博主就是因为合并代码后,系统规模正好越过临界线。
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值