3

当尝试在命令行上通过 ant 构建 Apache FOP 时,它会抱怨:

[javac] The system is out of resources.
[javac] Consult the following stack trace for details.
[javac]     ...
[javac]     at com.sun.tools.javac.main.Main.compile(Main.java:353)

我不明白。我有足够的内存,系统怎么会耗尽资源?

4

2 回答 2

5

您需要为 JVM 提供更多内存。例如,下面将 512Mb 分配给 JVM。

javac -Xmx512m ...

Java 虚拟机以固定的最大内存大小运行。对于内存密集型操作,您需要适当增加此值。-Xmx指定 JVM 将占用的最大内存量。指定 JVM在启动时-Xms分配的内存量。

这里有一个很好的选项摘要。

注意:鉴于上述情况是通过 Ant 发生的,您可能需要增加 Ant 可用的内存(例如set ANT_OPTS=-Xms256M -Xmx512M),和/或javac进程可用的内存(如果将其作为单独的可执行文件分叉)。

于 2010-01-01T11:57:18.357 回答
1

系统内存的大小只是故事的一半,JVM 在启动时会分配一个内存块作为堆空间。作为 java 应用程序的 java 编译器只有这么多的内存可以使用

您可以使用此选项自己设置 java 编译器的堆大小

javac     -J-Xms<size>m 

在此处查看完整的开关组

于 2010-01-01T11:57:20.837 回答