不小心点进个网页,查看jvm指令集,发现说  压入栈顶,推送出栈顶。这个栈指的是什么栈?有什么用呢?

解决方案 »

  1.   

    这里的栈,应该是汇编里面的“堆栈”那个意思。
    比如调用函数的时候,其实处理器会做的事情就是把当前程序指令的位置以及当前寄存器状态记录下来,做一个“压栈”动作,学名叫现场保护-_-!然后去执行调用的函数所在的程序指令位置,函数返回时,再做一个“出栈”动作,让cpu恢复到调函数之前的状态继续顺序执行下去。
    这个行为,要求栈是先进后出的机制。
    数据的存储根据需要也有时候用到这种存储方式。
      

  2.   

    堆栈(英文:stack),台湾作堆叠,在计算机科学中,是一种特殊的串行形式的数据结构,它的特殊之处在于只能允许在链结串行或阵列的一端(称为堆栈顶端指标,英文为top)进行加入资料(push)和输出资料(pop)的运算。另外堆栈也可以用一维阵列或连结串行的形式来完成。堆栈的另外一个相对的操作方式称为伫列。参见:http://zh.wikipedia.org/zh-cn/%E5%A0%86%E7%96%8A
      

  3.   

    是当前线程的运行栈。
    就好比你研究某个项目的源码的时候,看到某个方法调用,你必须按住ctrl然后点击这个方法去找它的代码。
    然后里面某个方法你又要点进去……
    但最后你要一级一级的返回到你最开始的那个切入点。
    java的栈就是用来保存运行时的代码执行顺序的。
    最直观的表现,就是出了异常之后的打印信息。
    它会告诉你某个方法的某行调用某个方法……最后抛了异常
      

  4.   

    看这个:
    http://topic.csdn.net/u/20100330/11/2c1818e2-7044-41e3-b89b-700dc9b89665.html?seed=93495102&r=64295645#r_64295645
      

  5.   

    人家都是小星星了,当然会懂什么是栈,更不用说FILO了,估计楼主想问这个“栈”在JVM里如何理解?
      

  6.   

    操作栈,处理各种运算的。
    比如java代码 ,int a = 5;int b = 10;int c = a+b;
    jvm需要这样处理:
    a入栈,(5)
    b入栈,(10)
    执行iadd指令(计算栈最上面的两个数相加,计算完后5和10出栈,将计算结果压入栈,这时候栈顶就是15了)。
    将15保存到c。