[置顶] 解决ANT出现的内存溢出问题

笔者今天在使用ANT构建项目时,抛出了异常错误,java.lang.OutOfMemoryError:The system is out of resources。

Ant中使用javac命令,抛出的java.lang.OutOfMemoryError错误和一般java应用抛出这个错误没两样。当执行JDKjavac命令,都是调用%JAVA_HOME%/lib/tools.jar包中com.sun.tools.javac.main.Main类。

在进行资料查阅和尝试后,发现解决一般有两种方案:

第一种:

通过修改ant的配置文件来指定虚拟机的内存大小,Window环境下修改bin目录下的ant.bat文件,可以直接在ant.bat的头文件处加上如下的指令:

set ANT_OPTS="-Xms800m -Xmx800m"  ,设置的足够大,应该不会出现内存溢出的状态。(已验证,建议使用)。

第二种:

javac节点处设置fork属性,同时指定memoryinitialsizememorymaximumsize属性。例如: 
  1. <javac fork="true"  

2.            srcdir="${basedir}/src"  

3.            destdir="${basedir}/build/classes"  

4.            classpath="${project.classpath}"  

5.            memoryinitialsize="256m"  

6.            memorymaximumsize="256m">  

7.     </javac>  


  说明: 
    -fork没有指定fork属性(默认为false),javac命令将和ant在同一个进程中执行,同时javac被分配的内存只有64MB,如果指定fork属性为truejavac命令将和ant不在同一个进程中执行,分配内存的大小将为memoryinitialsizememorymaximumsize指定的大小。 
    -memoryinitialsizejavac占用的最小内存。 
    -memorymaximumsizejavac占用的最大内存。 






你可能感兴趣的:(maven,ant,构建,ant溢出,ant报错)