5. Java之堆与栈

  1. 堆和栈都是 Java 中常用的存储结构,都是内存中存放数据的地方:

    • 在方法中定义的基本类型变量和引用类型变量,其内存分配在栈上;变量出了作用域(即定义变量的代码块)就会自动释放。
    • 堆内存主要作用在存放运行时通过 new 操作创建的对象。

    下面这张图展示了 Car myCar = new Car(); 这行代码运行时的内存状态:


    图中 0x6E34 是我们假设的内存地址。myCar 作为一个引用类型变量保存在栈中;而堆中保存着的对象本身,包含了其成员变量,如 speedcolorengine
    如果创建了多个对象呢?

    如果一个对象的成员变量是引用类型变量的话,则

  2. 基本变量类型的值存储在栈中。作用域结束(比如 main 方法执行结束)则这些变量占据的栈内存会自动释放。
    比如我们定义如下代码:

    int color = 0;
    int speed = 100;
    Car myCar = new Car(color, speed);
    

    则内存状态如下:


推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 122,368评论 15 532
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 26,186评论 9 311
  • 任何语言所编写的程序,其中的各类型的数据都需要一个存储位置,Java中数据的存储位置分为以下5种: 1.寄存器 最...
    闭家锁阅读 884评论 0 1
  • 我想,没有哪个女人的衣柜角落里不挂上那么一两套爱不释手,又弃之可惜的衣服。每一次打开衣柜,视线都是要逗留一番,然后...
    白云伊处阅读 45评论 0 2
  • 懒床一个月之久,已经突破了我的底线。殊不知一直用上进作为勉励自己也会有失效的时候,客户一走连着睡了一个月的懒...
    和风急雨阅读 38评论 0 0