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

我可以运行多个JVM吗? 如果是,那我怎样才能找到一个特定的类加载在哪个JVM上?

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

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

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

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

Sun以几种不同的方式打包工具以运行jvm。 通常,您要么安装了Java开发工具包(jdk)或java标准版(jse)作为默认设置。 这些包包括一个被调用来启动jvm的java程序。 此外,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 ls -al | grep java (例如在/ usr / bin中)并注意符号链接指向的位置,以便找出可能安装了其他版本的位置。

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

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

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

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

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

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

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

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

我可以运行多个JVM吗?

是的 – 只需运行’java’进程

如果是,那我怎样才能找到一个特定的类加载在哪个JVM上?

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

试试跑步

 jps -mlvV 

看看你得到了什么

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

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

默认JRE在环境变量中设置JAVA_HOME (右键单击我的计算机 – >属性 – >高级选项卡 – >环境变量)

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

C:\ Program Files \ Java \ j2re1.4.2_04 \ bin \ javaw.exe“-jar Myfile.jar

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

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

编辑:

jar文件中的所有类都在单个JVM上运行。 你可能猜到了。 看你的JAVA_HOME,它是默认的。

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