当尝试在命令行上通过 ant 构建 Apache FOP 时,它会抱怨:
[javac] The system is out of resources.
[javac] Consult the following stack trace for details.
[javac] ...
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:353)
我不明白。我有足够的内存,系统怎么会耗尽资源?
当尝试在命令行上通过 ant 构建 Apache FOP 时,它会抱怨:
[javac] The system is out of resources.
[javac] Consult the following stack trace for details.
[javac] ...
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:353)
我不明白。我有足够的内存,系统怎么会耗尽资源?
您需要为 JVM 提供更多内存。例如,下面将 512Mb 分配给 JVM。
javac -Xmx512m ...
Java 虚拟机以固定的最大内存大小运行。对于内存密集型操作,您需要适当增加此值。-Xmx
指定 JVM 将占用的最大内存量。指定 JVM在启动时-Xms
分配的内存量。
这里有一个很好的选项摘要。
注意:鉴于上述情况是通过 Ant 发生的,您可能需要增加 Ant 可用的内存(例如set ANT_OPTS=-Xms256M -Xmx512M
),和/或javac
进程可用的内存(如果将其作为单独的可执行文件分叉)。
系统内存的大小只是故事的一半,JVM 在启动时会分配一个内存块作为堆空间。作为 java 应用程序的 java 编译器只有这么多的内存可以使用
您可以使用此选项自己设置 java 编译器的堆大小
javac -J-Xms<size>m
在此处查看完整的开关组