我可以运行多个JVM吗?如果是,那么如何才能在哪个JVM上加载特定的类?
答案 0 :(得分:14)
你的意思并不完全清楚,但是:
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窗口,然后通过java
或javaw
应用程序运行您想要的内容。每个JVM运行的类都是包含main()
方法的THAT类。 Main()方法是您启动某个Java应用程序时首先运行的方法。当然,main()位于你的一些课程中。就是这样。