2011-03-05 71 views
2

有什麼辦法來限制javac的最大虛擬內存使用?在運行java時,我可以使用「-XmxAm」(其中A是免費兆字節數)運行它來限制它。有沒有像這樣的javac的東西?謝謝。Javac -Xmx限制虛擬機的使用

回答

1

我不這麼認爲。編譯器將需要構建完整的語法樹等,才能正常工作,因此限制內存使用並不是最好的想法。

12

可以通過使用-J選項給javac(以及帶有自己的本機啓動器的大多數java程序)提供相同的運行時選項。按照慣例,所有這些選項都直接傳遞給運行系統。所以,你的情況,你可以調用

javac -J-Xmx5m -J-Xmx4m <source> 

以很少的內存運行javac。當然,正如reseter所言,這種方法的用途有限,因爲javac可能真的需要一定量的內存來編譯。但是,在真正的大項目中,您可能希望以這種方式增加內存。

0

對於unix shell,可以使用ulimit命令(http://ss64.com/bash/ulimit.html)。

bash -c ' ulimit -v 1048576; javac PrettyWoman.java '. 

-v option是對javac進程的虛擬內存限制。

但是,它需要大量的虛擬內存,否則會出現以下錯誤,VM的初始化過程中出現

「錯誤。無法爲對象堆預留足夠的空間用於 。無法創建Java虛擬機「

注:Java方法 - Thread.sleep代碼不會的ulimit時間限制(實時VS CPU時間)計算在內,因此,如果您使用的ulimit與Java文件一起。 ,java文件可以保持睡眠,因爲它喜歡。