用Ant打包一个比較大的项目的时候,遇到OutOfMemory的问题,求助于Google和百度,网上的解决方式非常多,可是个人认为不够具体全面。我的问题须要综合两种方法才解决。把方案记下来。以期帮助大众点滴。
错误类型
Ant编译任务报错OutOfMemoryError,提示信息显示是Java Heap Space。
解决方式
综合网上的两种方法,我的须要两个都用。分析一下,无非就是Java程序内存分配太小,不够用了。Java相应的调整參数为非标准參数-Xmx。
- 改动Ant命令脚本
找到Ant的安装文件夹,进入bin文件夹。依据不同的环境。改动相应的脚本。Linux以下,打开ant脚本, 在ant_exec_args=
之前加一行代码export ANT_OPTS=-Xmx1024m
;Windows以下打开ant.bat, 在@echo off
之后加一行代码set ANT_OPTS=-Xmx1024m
。 - 更改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。