Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在单独的JVM进程中运行的同一类的两个对象实例_Java_Jvm - Fatal编程技术网

Java 在单独的JVM进程中运行的同一类的两个对象实例

Java 在单独的JVM进程中运行的同一类的两个对象实例,java,jvm,Java,Jvm,我有一个简单的JavaSE应用程序。它创建同一类的两个实例,但每个实例必须在单独的JVM进程中运行。如何才能做到这一点 我有一个简单的JavaSE应用程序,它创建了同一类的两个实例,但每个实例都必须在单独的JVM进程中运行,如何实现这一点 TL;博士: 你不可能做到这一点,你也不应该想要这一点,因为它毫无意义 胎儿不能生活在两个不同母亲的子宫内。它必须属于任何一个 再多一点: 当您运行Java程序时,对于每个单独的Java应用程序(例如,手动打包的.class文件、.jar文件、J2EE容器或任

我有一个简单的JavaSE应用程序。它创建同一类的两个实例,但每个实例必须在单独的JVM进程中运行。如何才能做到这一点

我有一个简单的JavaSE应用程序,它创建了同一类的两个实例,但每个实例都必须在单独的JVM进程中运行,如何实现这一点

TL;博士:

你不可能做到这一点,你也不应该想要这一点,因为它毫无意义

胎儿不能生活在两个不同母亲的子宫内。它必须属于任何一个

再多一点:

当您运行Java程序时,对于每个单独的Java应用程序(例如,手动打包的.class文件、.jar文件、J2EE容器或任何其他Java应用程序),JVM的离散实例会出现在您的操作系统内核之上

JVM实例加载相应的字节码,初始化类加载器,分配内存和CPU时间,最后这就是您所看到的正在运行的Java应用程序

但是,如果您正在谈论并将其与您在问题中提出的问题相混淆,那么我必须告诉您,当两个或多个JVM实例相互通信时,IPC是一种能力,而不是在多个JVM之间共享Java主类

作为:

Java虚拟机通过创建指定的初始类启动 以依赖于实现的方式,使用引导类加载器§5.3.1。 Java虚拟机然后链接初始类,初始化它,并调用 public类方法无效

因此,在引导JVM之后,将在链接和初始化所有内容之后调用main方法。从理论上讲,您甚至不能在两个或更多的JVM实例之间共享这一点。考虑类装入器、垃圾收集、链接阶段。。哪个应该做什么?哪个应该引导主进程?哪些应该维护对象实例化的类类型实例

此外,每个JVM实例都提供单个内核级别的输入和输出流,以便与操作系统通信

通过在一个JVM中运行多个Java应用程序,您可以在某种程度上实现相反的效果,但这会带来很多影响和问题,因此非常不鼓励这样做


最后但并非最不重要的一点:System.in和System.out内核级I/O通道是从一个JVM到一个OS内核的唯一实例。请记住这一点,就像多个JVM运行单个Java应用程序一样,这是一个完全混乱的局面。

启动两个JVM,让每个JVM创建一个类实例?正如Andy Turner所说,您需要运行java.exe两次才能获得两个JVM。这一要求有些不同寻常:进程间通信的设置远不简单。如果您解释了为什么实例必须在单独的进程中,我们可以建议更简单的替代方案。好吧,是一个Java测试,我必须在同一个JVM进程中创建同一类的两个实例,然后我必须创建两个实例,但每个实例都在单独的JVM进程中,然后这些实例应该交换一些消息,一切都只是使用Java核心的东西。也许,你从来没有听说过分布式应用程序?我的回答是我从来没有听说过?奇怪的我想这不是问题。分布式应用程序不在单个JVM实例下运行,也没有单个入口点方法。如果您注意,OP说有一个JavaSE应用程序,这很可能意味着有一个应用程序,OP希望在不同的VM中创建两个实例。