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

Raj*_*lli 6 java jvm cmd

任何人都可以告诉我,当我们在不同的命令中发出以下命令时,将创建多少个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
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*n C 6

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

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

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

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


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

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