1.内存区域不同
堆内存是不同于栈区、全局数据区、代码区的另一个内存区域。堆允许程序在运行时动态请求特定量的存储空间。函数中定义的一些基本类型的变量和对象引用变量都分配在函数的堆栈中。
2.其他属性
堆内存实际上指的是优先级队列的一种数据结构。第一个元素具有最高优先级。堆栈内存实际上是一种满足先进后出性质的数学或数据结构。栈内存的访问速度比堆内存快,仅次于寄存器,并且栈数据可以共享。
3.各个区域
堆中分配的内存必须由程序员手动释放,内存管理器不会自动释放。如果回收这些堆并动态分配堆,它就会一直被占用。堆栈中的空间是为此变量分配的。当超出变量的作用域时,Java会自动释放为变量分配的空间,并且该空间可以立即用于其他目的。
参考来源:-堆内存
参考来源:-栈内存
上一篇:栈内存和堆内存关系图
下一篇:java堆内存和栈内存图解