使用Javac -Xmx来限制虚拟机的内存使用

5
有没有办法限制javac的最大虚拟内存使用量?
运行java时,我可以使用“-XmxAm”(其中A是剩余兆字节的数量)来限制它。
javac有类似的功能吗?
3个回答

17

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

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

要使用非常少的内存运行javac。当然,正如reseter所说,以这种方式使用受限,因为javac可能确实需要一定量的内存来编译。不过,在真正大型的项目中,您可能希望通过这种方式增加内存。


1

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


0

对于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文件可以随意保持睡眠状态。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接