有没有办法限制javac的最大虚拟内存使用量?
运行java时,我可以使用“-XmxAm”(其中A是剩余兆字节的数量)来限制它。
javac有类似的功能吗?
运行java时,我可以使用“-XmxAm”(其中A是剩余兆字节的数量)来限制它。
javac有类似的功能吗?
您可以使用-J
选项将相同的运行时选项传递给javac(以及大多数具有自己本地启动器的Java程序)。按照惯例,所有这些选项都直接传递到运行时系统。因此,在您的情况下,您可以调用
javac -J-Xmx5m -J-Xmx4m <source>
要使用非常少的内存运行javac。当然,正如reseter所说,以这种方式使用受限,因为javac可能确实需要一定量的内存来编译。不过,在真正大型的项目中,您可能希望通过这种方式增加内存。
我不这么认为。编译器需要构建完整的语法树等,才能发挥作用,因此限制其内存使用可能不是最好的想法。
对于Unix shell,您可以使用ulimit命令(http://ss64.com/bash/ulimit.html)。
bash -c ' ulimit -v 1048576; javac PrettyWoman.java '.
-v 选项
是限制javac进程的虚拟内存大小。
然而,它需要大量的虚拟内存,否则会出现以下错误:
'Error occurred during initialization of VM. Could not reserve enough space for object heap. Could not create the Java virtual machine."
注意:java方法thread.sleep不会计入ulimit时间限制(实时时间与CPU时间),因此如果您在使用ulimit与java文件一起使用时,java文件可以随意保持睡眠状态。