有没有办法限制javac的最大虚拟内存使用量?运行java时,我可以使用“-XmxAm”(其中A是可用兆字节数)运行它来限制它。那样的javac有什么吗?感谢。
答案 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文件可以随意保持睡眠状态。