谁能解释一下,如果三个 java 应用程序在同一台机器上运行,堆空间将如何分配。?
每个JVM是否分配单独的堆空间。?否则三个应用程序会很常见。?
提前致谢。
谁能解释一下,如果三个 java 应用程序在同一台机器上运行,堆空间将如何分配。?
每个JVM是否分配单独的堆空间。?否则三个应用程序会很常见。?
提前致谢。
每个 JVM 都会有自己的堆内存(每个堆内存都会包含很多对象)。您可以查看这篇文章以获得进一步的说明:http: //javarevisited.blogspot.com.es/2011/05/java-heap-space-memory-size-jvm.html
当应用程序创建一个新对象时,JVM 子分配一个连续的堆内存区域来存储它参见这个
每个 JVM 都有自己的“堆空间”,因为每个 JVM 都有自己的用于堆的虚拟地址空间。从每个 JVM 的角度来看,它都有自己的内存空间,只有它可以访问。
然而,在幕后,它有点复杂。每个 JVM 的私有内存空间是操作系统内核的虚拟内存系统造成的假象。实际上,计算机上运行的所有程序都必须共享可用的(可能是有限的)RAM。因此,JVM 正在争夺可用的 RAM。就“堆空间”是 RAM 的一部分而言,堆空间不是分开的。特别是,如果一个 JVM 运行一个贪婪的应用程序,该应用程序使用大量堆空间(因此需要大量 RAM),因此 JVM 的总工作集超过了 RAM,所有 JVM 都会变慢。
操作系统为 JVM 分配了一定数量的空间......留给 JVM 将内存分配给它下面的不同线程(我不想说进程)......你可以将内存量更改为分配给JVM下的每个线程,但不能保证工作..它最终是JVM的调用。增加内存大小只是对 JVM 的一个提示——告诉它——“兄弟!这个线程需要更多内存……尝试分配它。”