区别:
1)栈内存用于存储各种变量及对象的引用;存储于栈内存的数据的大小和生存期是确定的,因而缺乏灵活性;
2)堆内存用于存储对象实体;在创建对象时动态分配;由于对象的生存期由程序的需求所决定,当没有引用再指向该对象的时候,垃圾回收机制会在某一时刻回收该部分内存并释放;
速度:
1)栈内存是静态分配的,并有系统底层的支持,有压栈出栈的指令,为其提供存储速度上的优势;
2)堆内存是在程序运行时动态分配的,存取较慢;
处理:
1)栈内存内的内存在数据使用完后自动释放;
2)堆内存中的对象由垃圾回收器在某一时刻回收释放 |