一、明确定义
1.堆栈:堆栈位于通用RAM(随机访问存储器)中,通过堆栈指针可以从存储器得到直接支持;
堆栈指针向下移动,分配新的内存;向上移动则释放那些内存。
2.堆:一种通用的内存池,同样位于RAM中,用于存放所有Java对象。
二、优缺点对比
1.堆栈:堆栈是一种快速有效的分配存储的方法,速度仅次于寄存器;
为了上下移动指针,在Java创建程序时,必须知道存储在堆栈所有项的生命周期;
明确所有项生命周期这一约束限制了程序的灵活性。
2.堆:程序不需要知道存储的数据要存活多长时间,因此在堆中分配内存有很大的灵活性;
但是在进行存储分配和清理时,堆要比堆栈要花费更多的时间。