是否有可能在java中有多个堆?如果有可能那么它会在哪些情况下发生?
答案 0 :(得分:8)
已经存在多个内存区域,但只有一个Java堆。
通常有;
ByteBuffer.allocateDirect(4)
请参阅missing [heap] section in /proc/pid/maps,了解有关原生空间[heap]
区域的有趣讨论。ByteBuffer.allocateDirect(10000000)
当你说“堆”时,它指的是第一个,你可以自然地分配Java对象并且垃圾收集器管理的那个。实际上,还有原生的“堆”,但这是不可互换的,并且具有非常不同的目的,实际上大多数Java开发人员永远不需要知道它存在。
注意:这就是JVM在Windows和Linux上的实现方式,标准中没有任何内容表明Java必须存在才能工作。
答案 1 :(得分:1)
由于Java虚拟机实例中只有一个堆,因此需要多个JVM' S用于多个堆
Java虚拟机架构 - 您可以看到堆区域只是Java虚拟机中的一个