有没有办法限制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 option
是javac进程的虚拟内存限制。
但是需要大量的虚拟内存,否则会出现如下错误,
'VM 初始化期间发生错误。无法预订足够的 对象堆的空间。无法创建 Java 虚拟机。”
注意:java 方法 - thread.sleep 不会被计入 ulimit 时间限制(实时与 CPU 时间),因此,如果您将 ulimit 与 java 文件一起使用,java 文件可以继续休眠。