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