客户 X 要求改进他使用的 Java 进程的启动时间。问题是,它不是通过 jar 文件运行,而是通过“jnlp”(我假设它是一个 java webstart 应用程序)
StartUserWorx.jnlp
有没有办法将其转换为 JAR 文件,然后让用户在本地调用应用程序,并在 JRE 中包含一个启动标志来为进程分配更多内存?
用户有点沮丧,因为同一办公室的其他工作人员在几乎相同的机器上使用相同的应用程序,但他的过程似乎总是需要更长的时间来加载(几分钟而不是几秒钟)。
客户 X 要求改进他使用的 Java 进程的启动时间。问题是,它不是通过 jar 文件运行,而是通过“jnlp”(我假设它是一个 java webstart 应用程序)
StartUserWorx.jnlp
有没有办法将其转换为 JAR 文件,然后让用户在本地调用应用程序,并在 JRE 中包含一个启动标志来为进程分配更多内存?
用户有点沮丧,因为同一办公室的其他工作人员在几乎相同的机器上使用相同的应用程序,但他的过程似乎总是需要更长的时间来加载(几分钟而不是几秒钟)。
检查慢速机器上的代理设置。该用户可能没有正确的代理设置,并且可能会发生大量额外的网络流量/超时?
我们之前在 webstart 上遇到过这个问题,从本地服务器下载 jar 是通过代理往返于另一个海岸并返回。
如果您使用记事本之类的工具查看 .jnlp 文件的内容,您将看到它用于运行的所有信息。
查找 main-class(在 application-desc 节点上)。这是包含 main 方法的 java 类。有关更多信息,您应该参考http://java.sun.com/javase/technologies/desktop/javawebstart/index.jsp了解 jnlp 的规范。
从这里您可以创建一个带有适当类路径的批处理文件来运行应用程序。但是,您破坏了使用 jnlp 方法的任何优点。所以你需要记住这一点。
jnlp 文件中还有一个“资源”部分,它将向您显示它需要的 jar 文件和其他 webstart jnlp。
不过,您应该在实际应用程序之外进行一些检查。如果这些是相似的机器,那么很可能有些不同。需要碎片整理?网络?也许 java-vm 本身加载时间太长。
检查用户的网络设置。根据我的经验,一分钟的延迟通常是由 DNS 配置错误、路由表错误(当没有收到肯定响应时 DNS 必须超时)或简单的 lmhosts 文件不正确造成的。