JAVA堆
1、被所有线程共享的一块内存区域
2、几乎所有实例都要在这里分配内存
3、GC主要的工作区域,GC主要采用分代收集算法
4、JAVA堆分为新生代和老生代;再细分,Eden空间,From Survivor空间,To Suivivor空间
5、线程共享的JAVA堆会划分出多个线程私有的线程缓冲区(Thread Local Allocation Buffer,TLAB)
6、可通过-Xms 和 -Xmx 控制
7、堆中没有内存完成实例分配,并且堆也无法再扩展时,抛出OutOfMemoryError