使用separate_jvm在各个JVM中启动applet并不总是有效

发布于 2024-08-05 09:07:18 字数 183 浏览 3 评论 0原文

我有一个小程序,它需要相当多的内存,所以我们想用separate_jvm = true来启动它,这样每个实例都有自己的JVM(而不是共享的),这样我们就不会在重复调用时耗尽内存。这在我们的开发盒上有效,但在我们客户的计算机上失败。

这有安全原因吗?

这是一份签名&当我们进行 3D 渲染时,这是值得信赖的小程序。

I have an applet that takes a fair amount of memory so we want to start it with separate_jvm = true so that each instance gets its own JVM (rather than a shared one) so we don't run out of memory upon repeated invocations. This works on our development boxes, but fails on our clients' computers.

Are there security reasons for this?

This is a signed & trusted applet as we're doing 3d rendering.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月亮坠入山谷 2024-08-12 09:07:18

我假设您的客户计算机上安装了 Sun Java 6 update 10。如果没有,您可能可以强制小程序 在版本至少为 6u10 的 JVM 中运行。我不确定如果找不到所需版本的 JVM,将引发什么错误或显示的错误消息。

除此之外,不能保证在 separate_jvm 参数在 APPLET 标记中指定。

唯一的保证是该 applet 将在与其他 applet 分开的自己的 JVM 中运行。如果 JVM 已经可用,并且该 JVM 中尚未加载 applet,则 JVM 可以在已初始化的 JVM 实例中加载 applet。

对于 Sun Java 6 u10 发行说明,以下要点值得一读:

以下是来自 6u10 发行说明,用于共享和创建新的 JVM 实例:

  • 如果用于启动预先存在的 JVM 实例的命令行参数是所请求参数的超集,将使用预先存在的 JVM 实例。
  • 如果为“默认”命令行参数集(即在 Java 控制面板中指定的参数,未指定 java_arguments)启动 JVM 实例,则该 JVM 实例将永远不会用于启动任何具有甚至一个参数的小程序。通过 java_arguments 指定的命令行参数。
  • -Xmx 被特殊处理:如果一个预先存在的 JVM 实例是通过 java_arguments 使用 -Xmx256m 启动的,并且一个新的 applet 请求 -Xmx128m,那么新的 applet 很可能会在预先存在的 JVM 实例中运行。换句话说,-Xmx 规范与大于或等于测试相匹配。

因此,最好的办法是在 applet 标记中提供 java_arguments,这样就很有可能在单独的 JVM 中启动 applet。

I would presume that Sun Java 6 update 10 is installed on your client's computers. If not, you could probably force the applet to run in a JVM whose version is atleast 6u10. I'm unsure about the error that will be thrown, or the error message displayed if the required version of the JVM is not found.

Apart from that, there is no guarantee that a separate JVM instance will be created when the separate_jvm parameter is specified in an APPLET tag.

The only guarantee is that the applet will run in its own JVM separated from other applets. If a JVM is already available and if no applet has been loaded in that JVM, then it is possible for the JVM to load the applet in the already initialized JVM instance.

For the Sun Java 6 u10 release notes, the following salient points are worth reading:

Here is a rough set of guidelines from the 6u10 release notes, for the sharing and creation of new JVM instances:

  • If the command-line arguments used to start a preexisting JVM instance are a superset of the requested arguments, the preexisting JVM instance will be used.
  • If a JVM instance is launched for the "default" set of command-line arguments (i.e., those specified in the Java Control Panel, with no java_arguments specified), then this JVM instance will never be used to launch any applet that has even one command-line argument specified via java_arguments.
  • -Xmx is handled specially: if a preexisting JVM instance was started with for example -Xmx256m via java_arguments, and a new applet requests -Xmx128m, then new applet will very likely be run in the preexisting JVM instance. In other words, -Xmx specifications are matched with a greater-than-or-equal test.

The best bet therefore is to provide java_arguments in the applet tag, such that there is a very high probability of launching the applet in a separate JVM.

鸠书 2024-08-12 09:07:18

separate_jvm 参数是在 1.6u10 中引入的。如果您客户的 JVM 比该值更旧,则该参数将被忽略。

The separate_jvm parameter was introduced in 1.6u10. If your customer's JVM is any older than that, the parameter will be silently ignored.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文