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

Kip*_*Kip 38 java memory-management jar

我正在启动一个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文件中.那可能吗?

kra*_*avi 28

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

java -Xmx256M -jar MyApp.jar
Run Code Online (Sandbox Code Playgroud)

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


wil*_*ood 14

您还可以使用像launch4j这样的包装器,它将为大多数操作系统生成可执行文件,并允许您指定VM选项.