Javac -Xmx限制VM使用率

时间:2011-03-05 11:18:27

标签: memory virtual javac

有没有办法限制javac的最大虚拟内存使用量?运行java时,我可以使用“-XmxAm”(其中A是可用兆字节数)运行它来限制它。那样的javac有什么吗?感谢。

3 个答案:

答案 0 :(得分:15)

可以使用-J选项为javac(以及大多数具有自己的本机启动程序的java程序)提供相同的运行时选项。按照惯例,所有这些选项都直接传递给运行时系统。因此,在您的情况下,您可以调用

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

用很少的内存来运行javac。当然,正如reseter所说,它的使用方式有限,因为javac可能真的需要一些内存来编译。在非常大的项目中,你可能希望以这种方式增加内存。

答案 1 :(得分:1)

我不这么认为。编译器需要构建一个完整的语法树等才能工作,因此限制其内存使用量并不是最好的想法。

答案 2 :(得分: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时间限制(实时与CPU时间),所以如果你使用ulimit和java文件,java文件可以随意保持睡眠状态。