java堆是java虚拟机所管理的内存中最大的一块。java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。 java堆是垃圾收集器管理的主要区域,因此很多时候也被称为GC堆,由于现在收集器基本上采用分代收集算法,所以java堆可以细分为:新生代和老年代;再细致一点的有Eden空间 From Survivor空间 to Survivor 空间等。 根据java虚拟机的规定,java堆可以在物理上不连续的内存空间中,只要逻辑上连续就行。当前主流的虚拟机都是按照可扩展来是实现的(通过-Xmx和-Xms控制)。如果在堆里没有完成实例分配,并且对也无法再扩展时,将会抛出outOFMemoryEoor 异常。