栈:管程序如何运行的,程序如何执行,如何处理数据。(局部变量其实也是存在栈中的,引用数据类型在栈中存的是地址引用)(栈的空间就不需要那么大了)
堆:管数据存储的。(引用数据类型的存放,所以堆的空间是比较大的)
生活理解
是不是很形象?哈哈
栈的作用
主管Java程序的运行,它保存方法的局部变量(8种基本数据类型、对象的引用地址)、部分中间的结果,并参与方法的调用和返回。我们先粗粒度感受一个栈的结构:
每个线程都有自己的栈,栈中的数据都是以栈帧(stack Frame)的格式为基本单位进行存储的。(栈中保存的就是一个个栈帧)
在这个线程上正在执行的每个方法都各自对应一个栈帧。方法和栈帧一一对应,一个方法的执行会伴随这栈帧入栈,一个方法的结束会拌嘴栈帧的出栈)
栈中是否存在垃圾回收
不存在,栈中就是入栈出栈。
假如底层用数组实现的话,其实就是移动下标的。
模拟栈结构C语言代码:(栈用数组实现) https://www.jb51.net/article/69375.htm 栈和队列,是操作受限制的线性表,既然是线性表,那么你用顺序表,链表都可以实现。堆:利用完全二叉树的结构来维护一组数据
小编这里整理了一套Python入门基础教程,如何你打算学Python,或者已经在学Python的小伙伴,下面这些资料我相信应该非常适合你。
获取方式私信发送【资料】即可免费领取