我可以在单台PC上运行多个JVM吗?

时间:2009-12-31 18:25:08

标签: java

我可以运行多个JVM吗?如果是,那么如何才能在哪个JVM上加载特定的类?

7 个答案:

答案 0 :(得分:14)

你的意思并不完全清楚,但是:

  • 您可以在同一台计算机上安装多个VM(版本/品牌等)
  • 您可以运行多个java进程,无论是相同的JVM版本还是不同的版本

除非您正在运行调试代理或类似的东西,否则我不知道如何询问JVM进程是否加载了特定的类。这似乎有点奇怪的要求 - 你为什么要这样做?

答案 1 :(得分:6)

是的,您可以在一台计算机上运行多个JVM。

Sun打包工具以几种不同的方式运行jvm。通常,您要么安装了Java开发工具包(jdk)或java标准版(jse)作为默认设置。这些包包含一个java程序,可以调用它来启动jvm。此外,jdk还为开发人员提供了一些额外的命令(如javac)。

您可以在一台计算机上使用多个jdk和/或jse。在Windows上,jdk和jse包通常安装在Program Files/java下(这是来自内存,因为我目前没有便携式电脑)

在Mac上查看/System/Library/Frameworks/JavaVM.framework/Versions。

在Linux上,我会使用which java命令来确定安装默认java命令的位置(通常是/ usr / bin)。然后执行ls -al | grep java(例如在/ usr / bin中)并记下符号链接指向的位置,以便找出可能安装其他版本的位置。

一旦你弄清楚你的系统中各种jdk和jse的位置,你就可以开始找出用于启动每个程序的java版本。

每个java程序都将使用默认的jvm启动。打开命令窗口或终端并尝试java -version以确定哪个版本是当前默认值。

不是使用默认的java版本,也可以启动程序以使用特定的Java版本。例如,有时我使用特定版本的jdk创建一个自定义窗口快捷方式来打开Eclipse。

从java 5开始,有一个名为jconsole的工具,它也可以帮助您确定哪些程序正在运行哪些jvms版本。只需打开一个控制台,然后输入jconsole,您就会得到一个很好的GUI,显示在默认的jvm中运行的所有程序。我想你甚至可以检查程序类路径。

希望有所帮助,祝你好运!

答案 2 :(得分:5)

您可以在磁盘和内存中运行尽可能多的JVM:)

每当启动Java应用程序时,您首先启动JVM,然后告诉它运行哪个应用程序。 “哪个JVM”的答案很简单:你加载应用程序的JVM!

有可能对类加载器进行一些深奥的调整,这将证明我刚才所说的例外。但在一般情况下和大多数应用程序中都是如此。

答案 3 :(得分:3)

  

我可以运行多个JVM吗?

是的 - 只需运行'java'流程

  

如果是,那我怎么能找到一个   加载特定的类   JVM?

随JAVA SDK一起发布的'jps'程序将列出在您的机器上破坏的所有Java进程(JVM),每个JVM正在执行的主类和类路径。您必须查看每个类路径上的哪个jar或类,以确定是否加载了类。

尝试运行

jps -mlvV

看看你得到了什么

答案 4 :(得分:1)

是的,您可以在PC中安装多个jvm,因为操作系统会在RAM中加载jvm(不是整个jvm)的实例。我们可以通过设置路径来调用JDK 1.4或JDK 1.6之类的不同jvm。

答案 5 :(得分:0)

多个 JRE (Java Runtime Enviroment)非常有可能。我这样做了。问题是JVM并不总是在您的系统上运行。它就像任何其他软件一样。当您运行jar文件时,它开始运行。

默认JRE在环境变量中设置为 JAVA_HOME (右键单击我的电脑 - >属性 - >高级选项卡 - >环境变量)

要运行jar文件,只需运行以下命令:

  

C:\程序   文件\的Java \ j2re1.4.2_04 \ BIN \ javaw.exe的”   -jar Myfile.jar

您可以使用任何其他jre javaw来运行jar文件。

请注意,j2re1.4.2_04可能不是您的jre版本。

编辑:

jar文件中的所有类都在单个JVM上运行。你可能猜到了。请参阅您的JAVA_HOME,这是默认设置。

答案 6 :(得分:0)

您可以在同一台计算机上运行任意数量的JVM。您只需打开几个CommandPrompt窗口,然后通过javajavaw应用程序运行您想要的内容。每个JVM运行的类都是包含main()方法的THAT类。 Main()方法是您启动某个Java应用程序时首先运行的方法。当然,main()位于你的一些课程中。就是这样。