栈内存和堆内存的区别
2012-11-07 22:25
113 查看
数组引用变量是存放在栈内存(stack)中,数组元素是存放在堆内存(heap)中,通过栈内存中的指针指向对应元素的在堆内存中的位置来实现访问,以下图来说明数组此时的存放形式。
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
那什么是栈内存和堆内存呢?我举例作一一解释。当执行方法时,该方法都会建立自身的内存栈,以用来将该方法内部定义的变量逐个加入到内存栈中,当执行结束时方法的内存栈也随之销毁,我们说所有变量存放在栈内存中,即随着寄存主体的消亡而消亡;反之,当我们创建一个对象时,这个对象被保存到运行时数据区中,以便反复利用(因为创建成本很高),此时不会随着执行方法的结束而消亡,同时该对象还可被其他对象所引用,只有当这个对象没有被任何引用变量引用时,才会在垃圾回收在合适的时间点回收,我们说此时变量所指向的运行时数据区存在堆内存中。
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
那什么是栈内存和堆内存呢?我举例作一一解释。当执行方法时,该方法都会建立自身的内存栈,以用来将该方法内部定义的变量逐个加入到内存栈中,当执行结束时方法的内存栈也随之销毁,我们说所有变量存放在栈内存中,即随着寄存主体的消亡而消亡;反之,当我们创建一个对象时,这个对象被保存到运行时数据区中,以便反复利用(因为创建成本很高),此时不会随着执行方法的结束而消亡,同时该对象还可被其他对象所引用,只有当这个对象没有被任何引用变量引用时,才会在垃圾回收在合适的时间点回收,我们说此时变量所指向的运行时数据区存在堆内存中。
相关文章推荐
- C++中的栈内存和堆内存的区别
- 栈内存与堆内存的区别
- 堆内存于栈内存怎么区别
- 栈内存和堆内存的区别(一个笔试题的一部分)
- 栈内存与堆内存的区别
- 栈内存和堆内存的区别
- java基础之对象的引用和引用的对象、equals和==的区别,栈内存和堆内存的存储区别
- 静态内存,栈内存和动态分配的内存(堆内存)的区别
- 栈内存与堆内存的区别
- 深夜聊一波栈内存和堆内存的区别
- 堆内存于栈内存怎么区别
- 栈内存与堆内存的区别
- C++中的栈内存和堆内存的区别
- 栈内存 堆内存
- java堆内存与栈内存
- 栈内存与堆内存
- 如何理解java中的堆内存和栈内存
- 栈内存与堆内存
- JAVA-堆内存、栈内存
- 浅谈java中的堆内存和栈内存