有人能解释一下,如果三个java应用程序在同一台机器上运行,堆空间将如何分配吗?每个JVM是否分配单独的堆空间。否则,它将对三个应用程序通用。先谢谢你。
6ojccjat1#
每个JVM都有自己的堆内存(每个堆内存都包含很多对象)。您可以查看本文以了解更多信息:http://javarevisited.blogspot.com.es/2011/05/java-heap-space-memory-size-jvm.html
xj3cbfub2#
当应用程序创建一个新对象时,JVM会再分配一个连续的堆内存区域来存储该对象。请参见THIS
axzmvihb3#
每个JVM都有自己的“堆空间”,也就是说,每个JVM都有自己的虚拟地址空间用于堆。从每个JVM的Angular 来看,它都有自己的内存空间,只有它自己可以访问。然而,在幕后,它有点复杂。每个JVM的私有内存空间是由操作系统内核的虚拟内存系统创建的假象。实际上,在计算机上运行的所有程序必须共享因此JVM在竞争可用的RAM。在某种程度上,“堆空间”是RAM的一部分,堆空间不是分开的。2特别是,如果一个JVM运行一个贪婪的应用程序,它使用了大量的堆空间(也就是大量的RAM),那么JVM的总 * 工作集 * 超过了RAM,所有的JVM都将变慢。
gfttwv5a4#
操作系统会为JVM分配一定量的空间......将该内存分配给不同线程的任务留给JVM(我不想说进程)......您可以更改JVM下每个线程的内存量,但它并不保证一定能工作。最后是JVM的调用。增加内存大小只是对JVM的一个提示-告诉它-“兄弟!这个线程需要更多的内存...试着分配一下。”
4条答案
按热度按时间6ojccjat1#
每个JVM都有自己的堆内存(每个堆内存都包含很多对象)。您可以查看本文以了解更多信息:http://javarevisited.blogspot.com.es/2011/05/java-heap-space-memory-size-jvm.html
xj3cbfub2#
当应用程序创建一个新对象时,JVM会再分配一个连续的堆内存区域来存储该对象。请参见THIS
axzmvihb3#
每个JVM都有自己的“堆空间”,也就是说,每个JVM都有自己的虚拟地址空间用于堆。从每个JVM的Angular 来看,它都有自己的内存空间,只有它自己可以访问。
然而,在幕后,它有点复杂。每个JVM的私有内存空间是由操作系统内核的虚拟内存系统创建的假象。实际上,在计算机上运行的所有程序必须共享因此JVM在竞争可用的RAM。在某种程度上,“堆空间”是RAM的一部分,堆空间不是分开的。2特别是,如果一个JVM运行一个贪婪的应用程序,它使用了大量的堆空间(也就是大量的RAM),那么JVM的总 * 工作集 * 超过了RAM,所有的JVM都将变慢。
gfttwv5a4#
操作系统会为JVM分配一定量的空间......将该内存分配给不同线程的任务留给JVM(我不想说进程)......您可以更改JVM下每个线程的内存量,但它并不保证一定能工作。最后是JVM的调用。增加内存大小只是对JVM的一个提示-告诉它-“兄弟!这个线程需要更多的内存...试着分配一下。”