Javac -Xmx 限制虚拟机使用

问题描述 投票:0回答:3

有没有办法限制javac的最大虚拟内存使用量?

运行java时,我可以使用“-XmxAm”(其中A是可用兆字节数)来限制它。

有类似 javac 的东西吗?

memory virtual 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 option
是javac进程的虚拟内存限制。

但是需要大量的虚拟内存,否则会出现如下错误,

'VM 初始化期间发生错误。无法预订足够的 对象堆的空间。无法创建 Java 虚拟机。”

注意:java 方法 - thread.sleep 不会被计入 ulimit 时间限制(实时与 CPU 时间),因此,如果您将 ulimit 与 java 文件一起使用,java 文件可以继续休眠。

© www.soinside.com 2019 - 2024. All rights reserved.