请告诉我,当我们在不同的命令中发出以下命令时,会创建多少个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
它们是使用保存jvm堆大小,还是对每个java进程使用不同的堆大小?
发布于 2014-03-06 09:20:08
每次运行java
命令时,都会创建一个新的JVM实例。(每个JVM实例都是一个不同的进程。)
因此,在您的示例中,JVM实例的数量将为3个。
JVM实例不共享堆。每个人都会有自己的一堆。通过创建多个堆没有节省堆空间。(实际上,您可能通过创建多个JVM来使用更多的堆空间.与在同一个JVM中使用多线程运行应用程序的3个实例相比。)
堆大小是独立的。它们是由各个JVM的命令行选项确定的。
对于大多数JVM,JVM实例之间唯一共享的内存是包含JVM代码的只读段,以及(可能的)共享本机库。
从历史上看,在JVM中,编译的Java代码可以在JVM之间共享。然而,这是复杂的,并且(AFAIK)当前一代JVM不支持这一点。
发布于 2014-03-06 09:21:39
每个进程都在自己的JVM中运行。而且堆空间不在JVM之间共享。此外,在您的情况下,您有3个不同的过程。所以,他们在自己的JVM中运行。
https://stackoverflow.com/questions/22219766
复制相似问题