2010-01-01 53 views
2

时,当试图通过蚂蚁在命令行上编译Apache FOP,它抱怨:系统资源耗尽的编译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,系统如何耗尽资源?

回答

5

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

javac -Xmx512m ... 

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

有一个很好的总结选项here

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

+0

谢谢!导出ANT_OPTS =“ - Xms1024M -Xmx1024M”终于奏效了。 – 2010-01-01 14:10:28

1

系统内存的大小只是故事的一半,JVM在启动时将内存块分配为堆空间。 Java编译器作为Java应用程序只有这个数量的内存与

工作,你可以为Java编译器自己堆的大小与此选项

javac  -J-Xms<size>m 

看到完整的开关设置here