java中“栈”的存放和回收,java中是怎么控制对栈中内容的回收的呢,另外栈中的元素,实质是存放在哪里?

Python011

java中“栈”的存放和回收,java中是怎么控制对栈中内容的回收的呢,另外栈中的元素,实质是存放在哪里?,第1张

栈存放的是你程序的执行逻辑,加载第一个方法后会按照你调用其他方法的顺序逐一入栈,当需要新建线程时,会由一个新线程栈存放,所以,最后调用的顶端方法是第一个出栈的,也就是第一个执行,这和咱java的执行顺序是一致的,,,JVM栈中存的是基本数据类型和JVM堆中对象的引用,所以说真正的复合数据类型是存放在堆里边的。。。至于栈内的数据的回收,如果堆里边的数据被GC了,那么栈里边的对应的引用就肯定不会存在了,,但是我感觉当方法结束之后,数据就会被回收,,,

代码贴全下。

你先 弄清楚 入栈逻辑。

你应该是 自己用 数组 来 实现 固定大小 栈的功能。

top 应该是 最后一次元素的 位置。

getSize() 应该是数组长度 应该是 数组当前实际存储的长度

入栈 第一步 是不是 先要 判断一下 这一次 入栈 会不会超过 当前 栈的大小。

我认为if(getSize()>=elements.length) 是这个功能。

然后 如果 此次 入栈 没有超过 其数组的大小。

那么将其 入栈 。

栈是一种常用的数据结构,栈只允许访问栈顶的元素,栈就像一个杯子,每次都只能取杯子顶上的东西,而对于栈就只能每次访问它的栈顶元素,从而可以达到保护栈顶元素以下的其他元素.”先进后出”或”后进先出”就是栈的一大特点,先进栈的元素总是要等到后进栈的元素出栈以后才能出栈.递归就是利用到了系统栈,暂时保存临时结果,对临时结果进行保护.

对于栈的学习,建议你看一看<数据结构与算法>这本书.