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 应用程序以包含在 Linux 发行版中
Java Web Start:自 Java 8 Update 111 以来无法通过代理隧道