当我们在不同的命令提示中发出java命令时,将创建多少个JVM实例?

时间:2014-03-06 09:11:03

标签: java cmd jvm

任何人都可以告诉我在不同命令中发出以下命令时会创建多少个jvm实例。

- command 1: c:\java -Xms32m -Xmx512m -Xss254k AccountSalary
- command 2: d:\java -Xms32m -Xmx512m -Xss254k AccountSalary
- command 3: c:\java -Xms32m -Xmx512m -Xss254k AccountSalary

他们是否会使用save jvm heap size或者每个java进程使用不同的堆大小?

2 个答案:

答案 0 :(得分:6)

每次运行java命令时,都会创建一个新的JVM实例。 (并且每个JVM实例将是一个独特的进程。)

因此,在您的示例中,JVM实例的数量将为3。

JVM实例不共享堆。每个人都有自己的堆。通过创建多个堆,无法保存堆空间。 (实际上,您可能通过创建多个JVM来使用更多堆空间...与使用多线程在同一JVM中运行应用程序的3个实例相比。)

大小是独立的。它们由各个JVM的命令行选项决定......


对于大多数JVM, JVM实例之间共享的唯一内存是包含JVM代码和(可能)共享本机库的只读段。

历史上,有一些JVM可以在JVM之间共享已编译的Java代码。但是,它很复杂,而且(AFAIK)当前生成的JVM不支持这一点。

答案 1 :(得分:0)

  

每个进程都在自己的JVM中运行。和堆空间不共享   在JVM中。此外,在您的情况下,您有3个不同的过程。所以,   它们运行在自己的JVM中。