Java 在OSX中设置ANT_选项的正确方法是什么?

Java 在OSX中设置ANT_选项的正确方法是什么?,java,macos,ant,Java,Macos,Ant,在OS X(Snow Leopard)上编译现有项目时,我遇到了“Error:Java heap space,Java.lang.OutOfMemoryError:Java heap space” 我使用的是默认的Java1.6 64位SDK和默认的Ant安装(两者都是作为操作系统的一部分提供的) 我在其他操作系统环境中遇到过这个问题,通常通过使用ANT_OPTS增加分配的内存来解决,但这似乎不起作用 我尝试如下设置ANT_选项: 在我进入的同一个壳里 export ANT_OPTS=“-Xmx

在OS X(Snow Leopard)上编译现有项目时,我遇到了“Error:Java heap space,Java.lang.OutOfMemoryError:Java heap space”

我使用的是默认的Java1.6 64位SDK和默认的Ant安装(两者都是作为操作系统的一部分提供的)

我在其他操作系统环境中遇到过这个问题,通常通过使用ANT_OPTS增加分配的内存来解决,但这似乎不起作用

我尝试如下设置ANT_选项:

在我进入的同一个壳里

export ANT_OPTS=“-Xmx1024m” 蚁群

我还尝试在~/.bash_配置文件中设置该值(我获取该配置文件以确保它被拾取)

我最终通过在Ant脚本中增加javac任务中的内存来解决内存问题,但这并不理想(我更愿意使用Ant_OPTS)

在OSX中运行Ant时,增加堆内存量的正确方法是什么

更新:

看来我错了,ANT_OPTS被视为例外。问题是我正在分岔javac任务(如下面bkail所述)


这就引出了我的下一个问题。当相同的代码/ant脚本在Linux上运行良好时,为什么OSX上的JAVAC进程总是内存不足?Java的默认OSX安装有什么不同,这意味着它需要分配额外的内存?

如果JAVAC memoryMaximumSize设置有任何影响,那么您的JAVAC必须e fork=“true”,这意味着javac JVM与Ant JVM是分开的,这意味着Ant_选项对javac JVM没有影响。您需要手动传播-Xmx设置。类似于以下内容:

<project>
  <script language="javascript"><![CDATA[
    importClass(java.lang.Runtime)
    project.setProperty("memoryMaximumSize", Runtime.getRuntime().maxMemory());
  ]]></script>
  <javac srcdir="." memoryMaximumSize="${memoryMaximumSize}" fork="true"/>
</project>

要回答更新的问题,默认最大堆根据JVM将系统分类为“客户端”还是“服务器”而变化。如果分类为“服务器”,则默认最大堆根据系统上的可用内存而变化。有关更多信息,请参阅此处:

java-版本应显示正在选择的VM:

java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
Java HotSpot(TM) Client VM (build 11.3-b02, mixed mode, sharing)

Mac电脑是64位的,Linux电脑是32位的吗?这可能是Mac电脑内存使用率较高的原因。
java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
Java HotSpot(TM) Client VM (build 11.3-b02, mixed mode, sharing)