Java中是否可以有多个堆?如果可能的话,那么在哪些情况下会发生这种情况?
Java中是否可以有多个堆?如果可能的话,那么在哪些情况下会发生这种情况?
已经存在多个内存区域,但只有一个Java堆。
通常有以下几种:
ByteBuffer.allocateDirect(4)
。有关本机空间中[heap]
区域的有趣讨论,请参见在/proc/pid/maps中缺少[heap]部分。ByteBuffer.allocateDirect(10000000)
当您说“堆”时,这是指第一个,可以自然分配Java对象的那个,垃圾回收器管理它。实际上,还存在本机“堆”,但这不可互换,并且具有非常不同的目的,事实上,大多数Java开发人员永远不需要知道它存在。
注意:这是JVM在Windows和Linux上实现的方式,标准中没有任何内容表明Java必须依赖这些。