1. 空间分配
栈:由系统自动分配、释放
堆:一般由程序员分配与释放,或者垃圾回收
2. 缓存方式
栈:一级缓存,调用时存入,用完立即释放
堆:二级缓存,生命周期与垃圾回收有关
3. 数据结构
栈:先进后出
堆:完全二叉树
4. 其他
空间大小:栈一般只有几M,堆可能无限几G。
碎片产生:栈没有碎片,堆会产生碎片。
生长方向:栈向下,堆向上。
分配方式:栈动静结合,堆仅动态分配。
分配效率:栈高,堆低。
附录:
Java内存分配:栈区,堆区,方法区(静态区)。
C语言内存分配:栈区,堆区,全局区(静态区),文字常量区,程序代码区。








网友评论