对象内存图

49 阅读1分钟

Java 内存分配

Java 程序在运⾏时,需要在内存中分配空间。为了提⾼运算效率,就对空间进⾏了不同区域的划分,因为每⼀片区域都有特定的处理数据⽅式和内存管理⽅式。 image.png

栈:所有局部变量都会在栈内存中创建
  • 局部变量:定义在方法中的变量或者方法声明上的变量
  • 方法执行都会加载到栈中进行
  • 局部变量特点:随着方法的调用而存在,随着方法的调用完毕而消失
堆:所有对象及其对应的实例变量和数组都将存储在此处
  • 简单理解为:new出来的东西,都存储在堆内存
  • 每一个new出来的东西都有一个地址值,使用完毕,会在垃圾回收器空闲时被回收
  • 实例变量(成员变量)有初始化值:
    • 基本数据类型:整数:0,浮点数:0.0,布尔:false,字符:空字符
    • 引用数据类型:null
代码:Student s = new Student();

image.png

单个对象

image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png

多个对象指向不同

image.png image.png image.png image.png image.png image.png image.png

多个引⽤指向相同

image.png image.png image.png image.png image.png image.png image.png image.png image.png