【问题标题】:Running multiple JVMs运行多个 JVM
【发布时间】:2010-01-08 19:48:21
【问题描述】:

如何在一台机器上运行多个 JVM?如何在不同的 JVM 中调用方法?

【问题讨论】:

  • @yx:我不确定,但我认为最初的问题是关于如何在不同 VM 中运行的两个 Java 进程之间“通信”。
  • 也许我看错了,我编辑了我的编辑,我绝对必须摆脱可怕的语法:“Is dat pssible”所以我可能做得太快了:(跨度>
  • 请说明您想要达到的目标。这个问题是可以解释的方式;你不会得到任何像这样有用的答案。
  • 如果你想在这些组件之间进行紧密的通信,你可以拥有一个包含你需要的一切的 JVM。如果您希望能够独立加载不同的模块,您可以查看 OSGI 容器。
  • "multiple JVMs" : 你是指一个 jvm 的多个实例还是不同的 jvm?

标签: java jvm


【解决方案1】:

如何在一台机器上运行多个 JVM?

只需启动多个java 进程。

如何在不同的 JVM 中调用方法?

使用任何类型的 RPC 框架(RMI、EJB、Web 服务等)。

【讨论】:

    【解决方案2】:

    嘿,我想你可能对如何运行 JVM 感到困惑。每次执行 java.exe 或 javaw.exe 都会为您创建一个新的 JVM 实例。如果你使用两个 java.exe 命令运行两个程序,那么你有两个 JVM 正在运行

    【讨论】:

      【解决方案3】:

      听起来您在谈论在不同的 JVM 下运行的单个应用程序中具有不同的方法。这是不可能的。

      如果您想为不同的应用程序使用不同的 JVM,则必须在启动应用程序时手动指定特定 JRE 的路径。示例:

      $PATH_TO_FIRST_JVM/bin/java -jar application1.jar
      $PATH_TO_DIFFERNT_JVM/bin/java -jar application2.jar
      

      【讨论】:

        【解决方案4】:

        您可以在一台机器上运行尽可能多的 jvm,因为每个 java.exe 或 javaw.exe 都会启动一个新的 jvm。

        关于调用方法,您可以使用 RMI。

        【讨论】:

          【解决方案5】:

          是的,您可以在同一台机器上运行多个虚拟机。您只需要指定要运行哪一个。

          当您说要调用在不同 JVM 上运行的方法时,您的意思是让它们相互通信吗?如果是这样,请查看Remote Method Invocation (RMI)

          【讨论】:

          【解决方案6】:

          这没有任何意义。

          1. 安装不同的JVM很简单,安装各种JRE、JDK等即可。

          2. 要执行不同的命令,您将在每次安装时使用正确的 java 命令。许多项目依赖 JAVA_HOME 进行此设置。

          3. 如果您说的是小程序浏览器中的多个 JVM,我无能为力。

          【讨论】:

            【解决方案7】:

            您可以在同一台机器上启动多个 java 程序(例如 Eclipse 是一个 java 程序,它可以启动您的程序),但是没有什么可以提供不同 JVM 之间的轻松通信。

            RMI 是 Sun 提供的机制,用于在不同或同一台机器上的 JVM 之间提供通信,但要正确工作并非易事,而且还没有成为事实上的实现方式。一个重要的功能是即使目标 JVM 中不存在相应的类,它也可以在 JVM 之间移动对象。

            http://java.sun.com/javase/technologies/core/basic/rmi/index.jsp

            否则,您可以考虑使用网格软件、Terracotta 或任何远程过程调用机制。这些通常是基于 TCP/IP 的。您可能需要编辑您的问题以描述您想要完成的任务,以便了解如何到达那里。

            【讨论】:

            • 自 2020 年起,通信通常使用 REST 调用进行。
            【解决方案8】:

            如何在一台机器上运行多个 JVM?如何在不同的 JVM 中调用方法?

            RMI 通常是这样完成的。我也想做同样的事情,但没有 RMI。克服 32 位 JVM 上 1.5g 上限的简单方法,Windows 上是唯一可以播放视频的(JMF + Fobs、VLCJ、GStreamer 都因 Oracle 64 位 JVM 而失败,Harmony 还没有准备好,试一试,不是漂亮)。认为视频可以在另一个 JVM 中运行,并且可能通过一些 JNI 以某种方式共享对象。

            【讨论】:

              【解决方案9】:

              这里有几个有见地的答案,但让我感兴趣的是运行多个 JVM 的驱动需求。为什么你认为你需要这样做?如果您正在寻找并行处理,您可能需要考虑多线程应用程序,而不是运行多个 JVM。由于每个 JVM 都可能需要大量资源,并且您希望在执行路径之间进行通信,因此这很可能是满足您需求的更好解决方案。

              【讨论】:

                猜你喜欢
                • 2015-10-15
                • 2020-04-14
                • 2013-05-18
                • 2014-09-20
                • 2020-07-31
                • 2015-07-26
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多