现在,OSX Maverick的内存与内存不同(看起来和我读过的内容不同),当我将Java作为一个单独的JVM(Ant / JUnit / etc。)运行时,我常常得到OutOfMemory异常,因为它基于可用内存的最大堆通常接近于零(因为这显然是Maverick的工作方式?)。我知道我可以使用-Xmx参数为Eclipse中的运行或外部工具配置设置最大堆空间,但是当我有几个可以运行的配置时,这很痛苦。
我相信我必须在一个单独的JVM中运行,因此我的配置不会受到Eclipse类路径JAR的污染,并且程度较小,因此Eclipse JVM不会受到配置运行和所有类加载的污染。继续。
是否有全局设置为Eclipse启动的所有JVM设置最大堆?对于Ant,我尝试在我的环境中将ANT_OPTS设置为“-Xm1024m”,但是在通过Eclipse运行Ant时似乎没有采用该设置。如果我直接从命令行运行Ant,它似乎确实有用(或者至少我没有得到异常)。在Eclipse中以详细+调试模式运行Ant时,我看到“设置项目属性:env.ANT_OPTS - > -Xmx1024m”,因此我知道变量已设置。
我运行了Java VisualVM以更好地了解发生了什么,这就是它所拥有的:
JVM: Java HotSpot(TM) 64-Bit Server VM (23.25-b01, mixed mode)
Java: version 1.7.0_25, vendor Oracle Corporation
Java Home: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/jre
JVM Flags: <none>
Main class: org.eclipse.ant.internal.launching.remote.InternalAntRunner
答案 0 :(得分:0)
您可以在Run > External Tools > External Tools Configurations
选项卡的JRE
对话框中为Eclipse Ant构建配置JVM参数。
请注意,默认情况下,实际上是在与Eclipse相同的JVM中运行Ant(这使得一些额外的Eclipse任务可用)。
答案 1 :(得分:0)
运行VisualVM让我意识到Eclipse仍在使用1.7.0_25而不是1.7.0_45,这是我安装的最新版本。一旦我将Eclipse更新为使用1.7.0_45,我就不再有问题,因为VM确实使用了1/4的总内存。很高兴知道,但似乎构建25有一个bug或什么的。