当尝试在命令行上使用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)
我不明白。我有足够的RAM,系统如何耗尽资源?
答案 0 :(得分:5)
您需要为JVM提供更多内存。例如下面为JVM分配512Mb。
javac -Xmx512m ...
Java虚拟机以固定的最大内存大小运行。对于内存密集型操作,您需要适当增加它。 -Xmx
指定JVM将采用的最大内存量。 -Xms
指定JVM在启动时分配的内存量。
有一个很好的选项摘要here。
注意:鉴于上述情况是通过Ant发生的,您可能需要增加Ant可用的内存(例如set ANT_OPTS=-Xms256M -Xmx512M
)和/或javac
进程可用的内存(如果它被分叉为一个单独的可执行文件。
答案 1 :(得分:1)
系统内存的大小只是故事的一半,JVM在启动时会将内存块分配为堆空间。 java编译器作为java应用程序只有这么多的内存可以使用
您可以使用此选项自行设置java编译器的堆大小
javac -J-Xms<size>m
查看完整的开关集here