2010-01-01 48 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