2011-03-05 72 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文件可以保持睡眠,因为它喜欢。