Percy

我可以设置Java最大堆大小以从jar文件运行吗?

java

我正在启动一个Java jar文件,该文件通常需要比默认的64MB最大堆大小更多的文件。256MB的堆大小足以满足此应用的需求。是否有任何指定(可能在清单中?)启动jar时始终使用最大256MB的堆大小?(如果需要,请在下面提供更多详细信息。)

这是我用Java编写的命令行应用程序,它可以进行一些图像处理。在高分辨率图像(大约12兆像素及以上,这并不罕见)上,我收到OutOfMemoryError。

目前,我正在从一个jar文件启动该应用程序,即

java -jar MyApp.jar params...

我可以通过在命令行上指定256MB最大堆大小来避免OutOfMemoryError,即:

java -Xmx256m -jar MyApp.jar params...

但是,由于我知道即使对于高分辨率图像也需要256MB的内存,所以我不想指定它。我想将这些信息保存在jar文件中。那可能吗?


阅读 384

收藏
2020-12-05

共2个答案

一尘不染

您还可以使用类似launch4j的包装器,该包装器将使大多数OS:es可执行文件,并允许您指定VM选项。

2020-12-05
一尘不染

编写包含以下行的批处理或Shell脚本。将其放入存储MyApp.jar的文件夹中。

java -Xmx256M -jar MyApp.jar

之后,请始终打开此批处理/脚本文件以启动JAR文件。虽然,这不会将虚拟内存大小的规范嵌入jar文件本身。但是,它可以解决在命令行上经常编写相同命令的问题。

2020-12-05