编辑我不想使用Java Web Start
我有一个Java应用程序,我想使用不同的VM参数运行,具体取决于它启动的系统的内存量。
例如,如果机器有1 GB或更少的内存,我想传递“-Xmx200m”和“-Xmx400m”(如果它有2 GB)和“-Xmx800m”(如果它有8 GB)(这些只是示例) )。
有可行的方法吗?
我尝试过第一个小型Java应用程序(因此是可移植的)确定可用的内存量,然后启动一个新的Java应用程序,但我认为这不是很干净。
截至目前,我已经编写了Bash shell脚本,根据配置调用具有正确参数的Java应用程序,但它仅适用于OS X上的Linux。
解决这个问题的正确方法是什么?
应用程序打包程序包;)帮助吗?
答案 0 :(得分:2)
你确定要这么做吗?通常,Java应用程序需要一定量的内存,而不是更多,而不是更少。
如果您的计算机内存很少,并且在-Xmx处指定了一个较小的数字,则可能会出现内存不足的情况。
如果您的计算机有大量内存且指定了大量内存,则应用程序将不会使用所有内存,而只会使用正在使用的对象所需的数量。
因此,通常,您不会通过在-Xmx处指定大数字来丢失内存。
(例外情况是服务器应用程序具有大量对象'吞吐量'并且往往会浪费内存。)
答案 1 :(得分:2)
你对目前的做法有什么抱怨?它是完全可移植的(不同于各种脚本解决方案......为什么脚本比100%便携式字节码更“干净”?),如果硬件在安装后发生变化,它将完美适应(因此它比捕获硬件细节更好)您的安装脚本)。
如果您能解释实际问题,可能更容易找到解决这些特定问题的方法。
以下是您可能更喜欢的替代方案:实际上:复制Photoshop,GIMP等所做的操作,并将“资源使用”或“性能”作为应用偏好的一部分。如果/如果他们更改此设置,则必须提示他们重新启动应用程序(使用修改后的启动过程重新启动应用程序,因为您无法更改正在运行的应用程序的内存限制...您在哪里编写新标记是部署方法依赖的),但这不是一个设置的灾难,他们可能会改变一次。
您还可以在首次运行时检查他们的硬件,如果您的默认安装设置偏离其设置,则提示他们更改设置。
答案 2 :(得分:2)
我建议你
答案 3 :(得分:0)
要定义各种启动配置,我将使用JNLP。可以在那里指定xmx。
不幸的是,这仍然需要你找出系统有多少内存,你的小Java应用程序听起来最好。
答案 4 :(得分:0)
在与现有解决方案相同的行中,我使用脚本来启动我的应用程序但是使用Python而不是Bash。 Python出现在大多数Linux发行版和OSX上。唯一的困难是Windows,但您可以建议Python作为类似于安装JVM的先决条件。
答案 5 :(得分:0)
对于任何“配置任务”,我建议使用izpack,真正强大且免费的打包器。您可能还会看一下eclipse,他们已经实现了重启java应用程序。
答案 6 :(得分:0)
在应用程序包中使用bash脚本而不是JavaApplicationStub可以更改参数。但是,这会破坏handleOpenFile()功能:事件信号永远不会到达handleOpenFile ApplicationEvent事件。见http://lists.apple.com/archives/java-dev/2010/Jun/msg00009.html