【发布时间】:2011-07-09 09:02:00
【问题描述】:
有没有办法限制 javac 的最大虚拟内存使用量?运行 java 时,我可以使用“-XmxAm”(其中 A 是可用兆字节数)来限制它。 javac有这样的东西吗?谢谢。
【问题讨论】:
有没有办法限制 javac 的最大虚拟内存使用量?运行 java 时,我可以使用“-XmxAm”(其中 A 是可用兆字节数)来限制它。 javac有这样的东西吗?谢谢。
【问题讨论】:
对于 unix shell,您可以使用 ulimit 命令 (http://ss64.com/bash/ulimit.html)。
bash -c ' ulimit -v 1048576; javac PrettyWoman.java '.
-v option 是 javac 进程的虚拟内存限制。
但是,它需要大量的虚拟内存,否则会出现以下错误,
'虚拟机初始化过程中发生错误。无法保留足够的 对象堆的空间。无法创建 Java 虚拟机。”
注意:java 方法 - thread.sleep 不会计入 ulimit 时间限制(实时与 CPU 时间),因此如果您将 ulimit 与 java 文件一起使用,java 文件可以随意保持休眠。
【讨论】:
您可以通过使用-J 选项为javac(以及大多数具有自己的本地启动器的Java 程序)提供相同的运行时选项。按照惯例,所有这些选项都直接传递给运行时系统。所以,在你的情况下,你可以调用
javac -J-Xmx5m -J-Xmx4m <source>
以很少的内存运行 javac。当然,正如reseter 所说,这种方式的用途有限,因为javac 可能确实需要一些内存来编译。不过,在非常大的项目中,您可能希望以这种方式增加内存。
【讨论】:
我不这么认为。编译器需要构建完整的语法树等才能工作,因此限制其内存使用并不是最好的主意。
【讨论】: