Java 网络启动 : how to vary heap memory request in jnlp depending on what client can manage?

标签 java memory heap-memory java-web-start jnlp

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

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

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

问题是,如果你请求一个比 jvm 允许的更大的最大堆大小,它就会失败,默默地。糟糕。

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

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

最佳答案

... is there a way I can test how much memory is available on the client and only request a large max-heap-size if it can handle it?

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

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

关于Java 网络启动 : how to vary heap memory request in jnlp depending on what client can manage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8182576/

相关文章:

c++ - STL c++ 动态内存分配

scala - 增加 Scala 的 JVM 堆大小?

java - 增强的消息格式?

java httpclient返回404作为响应码

Javascript 通过标识符引用对象还是直接引用它?

c++ - 第二次迭代崩溃 - 顺序无关

c - 为函数中的结构分配内存

java - 使用 Java 程序运行 Bash 命令的处理输入

java - 普通 Java 套接字中没有密码套件

c - 这是内存碎片吗? ( Visual Studio 和 mingw)