1.一个jvm实例只存在一个堆内存,堆也是java内存管理的核心区域;
2.java堆区在jvm启动的时候即被创建,其空间大小也就确定了。是jvm管理的最大一块内存空间,堆内存的大小是可以调节的;
3.《java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的;
4.所有的线程共享java堆,这里可以划分线程私有的缓冲区(Thread Local Allocation Buffer,TLAB);
5.《java虚拟机规范》中对堆的描述是:所有的对象实例以及数组都对应在运行时分配的堆上,从实际使用的角度上看几乎所有的对象实例都在这里分配内存;
6.数组和对象可能永远不会存储在栈上,因为栈帧中保存引用,这个引用指向对象或者数组在堆中的位置;
7.在方法结束后堆的对象不会马上被移除,仅仅在垃圾收集的时候才会被移除;
8.堆,是GC执行垃圾回收的重点区域
原文:https://www.cnblogs.com/zyf-yxm/p/13623670.html