zoukankan      html  css  js  c++  java
  • 通俗的理解java的堆和栈

    可以把堆理解为一家餐厅,里面有200张桌子,也就是最多能同时容纳200桌客人就餐,来一批客人就为他们安排一些桌子,如果某天来的客人特别多,超过200桌了,那就不能再接待超出的客人了。
    当然,进来吃饭的客人不可能是同时的,有的早,有的晚,先吃好的客人,老板会安排给他们结账走人,然后空出来的桌子又能接待新的客人。
    这里,堆就是餐厅,最大容量200桌就是堆内存的大小,老板就相当于GC(垃圾回收),给客人安排桌子就相当于java创建对象的时候分配堆内存,结账就相当于GC回收对象占用的空间。

    接着把栈比作一口废井,这口井多年不用已经没水了,主人现在把它作为贮存自酿酒的地方,存酒的时候就用绳子勾着酒坛子慢慢放下去,后面再存就一坛一坛堆着放上去,取酒的时候就先取最上面的坛子。
    这个比喻可能不太好,但是栈就是这个概念,先进后出。

    ---------------------------------------------------------------------------------------------

    在java中的栈:栈的原理明白了,其实只要是计算机只要是编程语言,什么堆什么栈都是一样的,基本作用也一样。java中可以认为,栈用来存放局部变量的。

    public void fun(){

        int i=0; //i 是一个局部变量,存放在栈里面的

        Object obj = new Objec(); //obj 是一个对象应用,同样也是一个局部变量,存放在栈里面的,但是obj指向的对象,在存在堆中

    }

  • 相关阅读:
    Visual Studio 2010CTP的安装
    Crystal Reports中的数据访问
    Web.config配置文件详解1
    asp.net 面向对象方式的传值
    DataSet导出到Excel
    asp.net 身份验证
    Ini文件操作类
    asp.net环境下配置kindEditor文本编辑器
    验证视图状态 MAC 失败解决方法
    Web.config配置文件详解2
  • 原文地址:https://www.cnblogs.com/shamo89/p/9056383.html
Copyright © 2011-2022 走看看