【问题标题】:Javac -Xmx to limit VM usageJavac -Xmx 限制虚拟机使用
【发布时间】:2011-07-09 09:02:00
【问题描述】:

有没有办法限制 javac 的最大虚拟内存使用量?运行 java 时,我可以使用“-XmxAm”(其中 A 是可用兆字节数)来限制它。 javac有这样的东西吗?谢谢。

【问题讨论】:

    标签: memory virtual javac


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2013-05-21
          • 2014-12-16
          • 2013-10-27
          • 2010-10-17
          • 1970-01-01
          • 2016-12-15
          • 2011-06-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多