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

2022-09-01 03:09:45

我正在启动一个java jar文件,它通常需要超过默认的64MB最大堆大小。不过,256MB的堆大小对于此应用程序来说已经足够了。在启动 jar 时,是否还要指定(也许在清单中?)始终使用 256MB 的最大堆大小?(如果需要,下面提供了更具体的详细信息。


这是我用Java编写的命令行应用程序,它执行一些图像处理。在高分辨率图像(约1200万像素及以上,这并不罕见)上,我得到了一个OutOfMemoryError。

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

java -jar MyApp.jar params...

我可以通过在命令行上指定256MB的最大堆大小来避免超出内存错误,即:

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

但是,我不想指定这一点,因为我知道即使对于高分辨率图像,256MB也足够了。我想将该信息保存在jar文件中。这可能吗?


答案 1

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

java -Xmx256M -jar MyApp.jar

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


答案 2

你也可以使用像launch4j这样的包装器,它将为大多数OS:es制作可执行文件,并允许您指定VM选项。