我 构建 (不执行!)一个包含81K clacts的可执行jar。在构建过程中构建一个大的jar文件逐渐减慢,直到抛出java.lang.OutofMemoryException
。
那么 - 那么如何指定-Xmx1024m
来为jvm提供一些额外的内存空间?
注意
罐
命令不接受任何-D
命令行参数。
现在我尝试设置
export JVM_OPTS=-Xmx1024m
并且可能有所帮助 - 因为jar命令确实有效。但我没有明确的方法知道它是否真的得到应用。
答案 0 :(得分:1)
设置JVM_OPTS
解决此问题
export JVM_OPTS="-Xmx2048m"
jar -cvfm myjar.jar /tmp/manifest.txt classdir/
其他答案 - 以及结束投票 - 得出的结论是,该OP是通过java -jar myjar.jar
执行 jar文件的。
问题是 - 正如OP中所述 - 有数万个类要包含 - 并且它压倒了默认的JVM设置 - 导致OOME。我可以看到jar
命令在它放弃之前放慢速度。添加JVM_OPTS后,构建 jar中没有更多问题。
答案 1 :(得分:0)
在启动JVM时,必须通过进程确定内存量:
java -Xmx1024m ... -jar my.jar ...
请参阅:
答案 2 :(得分:0)
你不能。
构建阶段与运行阶段不同。在构建时,您编译java源代码,并将它们与jar中的一些资源一起组装。这里没有涉及JVM选项。
然后在运行时,您可以通过java
命令将选项传递给JVM。您不能在构建时包含JVM选项,因为:
由于这些原因,如果在构建时指定运行时选项是没有意义的,那就是为什么不可能的原因。