首页 > 代码库 > Ant报错之out of memory

Ant报错之out of memory

用Ant打包一个比较大的项目的时候,遇到OutOfMemory的问题,求助于Google和百度,网上的解决方案很多,但是个人觉得不够详细全面,我的问题需要综合两种方法才解决。把方案记下来,以期帮助大众点滴。

错误类型

Ant编译任务报错OutOfMemoryError,提示信息显示是Java Heap Space。

解决方案

综合网上的两种方法,我的需要两个都用。分析一下,无非就是Java程序内存分配太小,不够用了。Java对应的调整参数为非标准参数-Xmx。

  1. 修改Ant命令脚本
    找到Ant的安装目录,进入bin目录,根据不同的环境,修改对应的脚本。Linux下面,打开ant脚本, 在ant_exec_args=之前加一行代码export ANT_OPTS=-Xmx1024m;Windows下面打开ant.bat, 在@echo off之后加一行代码set ANT_OPTS=-Xmx1024m
  2. 更改Ant的javac指令参数
    新增以下参数fork="true" memoryMaximumSize="1024m"。注意fork="true"必须与memoryMaxinumSize 配套使用。fork="true"是指单独起一个java进程才处理编译任务。

总结

Java的内存不够错误,都是调整java命令参数。-Xmx调整堆的最大值,与java heap space错误对应;-XX:PermSize<=size>调整永久区的最大值,与java permanent space错误对应,例如-XX:PermSize=64m,把永久区调整为64M。