Java web start:如何根据客户端可以管理的内容来改变 jnlp 中的堆内存请求?

Posted

技术标签:

【中文标题】Java web start:如何根据客户端可以管理的内容来改变 jnlp 中的堆内存请求?【英文标题】:Java web start: how to vary heap memory request in jnlp depending on what client can manage? 【发布时间】:2012-01-01 05:25:45 【问题描述】:

所以 - jnlp 文件可以这样请求堆内存大小:

<j2se version="1.6+" href="blah" max-heap-size="1g"/>

对于基于 Web 的应用程序来说,1 GB 是很多内存,不是吗,但遗憾的是,用户可能想要对我的应用程序执行的某些(不是全部)任务需要这么多内存。

问题是,如果您请求的 max-heap-size 比 jvm 允许的更大,它就会默默地失败。哎呀。

我不知道的第一件事是 jvm 如何决定最大允许的 max-heap-size 是多少。大概取决于可用内存?

假设是这种情况,有没有一种方法可以测试客户端上有多少可用内存,并且只有在可以处理的情况下才请求较大的 max-heap-size?能力较弱的客户端只能使用较小的堆运行并失去一些功能。

【问题讨论】:

【参考方案1】:

...有没有一种方法可以测试客户端上有多少可用内存,并且只有在可以处理的情况下才请求较大的 max-heap-size?

我不这么认为。 (让您的服务器询问用户的 PC 有多少内存将是一个潜在的安全问题......)

我认为您能做的最好的事情就是为用户提供多个具有不同堆大小的 JNLP 链接,并允许他们在它们之间进行选择。

【讨论】:

谢谢,这就是我想做的。可惜 jvm 不能只设置较小的堆大小......即将我的请求视为一个请求,而不是做或死。或者,允许在运行时从 java 代码中更改 max-heap-size。 @SideshowBob - 不幸的是,HotSpot JRE 不支持其中任何一个功能。

以上是关于Java web start:如何根据客户端可以管理的内容来改变 jnlp 中的堆内存请求?的主要内容,如果未能解决你的问题,请参考以下文章

Java Web Start 被最新的 Java 版本阻止

托管 Java Web Start 应用程序以包含在 Linux 发行版中

什么是 Java Web Start 软件以及如何启动它

Java Web Start:自 Java 8 Update 111 以来无法通过代理隧道

从 Web 客户端调用 Microsoft Bot Framework 机器人,无需在 Azure 上托管

如何从 MacOS 中删除 Java Web Start