5. Java之堆与栈

2017-10-12  本文已影响18人  苏宇lovecc
  1. 堆和栈都是 Java 中常用的存储结构,都是内存中存放数据的地方:

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

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


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

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

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

    则内存状态如下:


上一篇下一篇

猜你喜欢

热点阅读