Java内存管理

文章介绍了Java内存的四个区域——栈、堆、方法区和本地方法栈,以及对象创建时内存的分配过程。在创建Student对象时,详细阐述了从加载class文件到构造方法初始化的步骤。示例代码展示了Animal类的使用,包括变量赋值和方法调用,进一步解释了内存中的变化。最后,讨论了对象生命周期,指出main方法执行完毕后,相关变量会出栈。
摘要由CSDN通过智能技术生成

Java内存分配介绍:

方法区本地方法栈寄存器

 当我们在创造一个对象时

Student stu =new Student()

 内存中会做以下事情

1.加载class文件
2.声明局部变量
3.在堆内存中开辟一个空间
4.默认初始化
5.显示初始化
6.构造方法初始化
7.将堆内存中的地址值赋值给左边的局部变量
public class Animal{
    String name;
    int age
public void walk(){
    System.out.println("walk");
    }
}
public class TestAnimal{
    public static void main(String[] args){
    Animal a=new Animal();
    System.out.println(a);
    System.out.println(a.name+"    "+a.age);
    a.name="cat";
    a.age=2;
    System.out.println(a.name+"    "+a.age);
    a.walk();
    }
}

下面是该代码的内存图

 执行过程分析:

首先,main()方法会先进入栈里面,然后执行new出一个对象a,a被new后会被加载到堆中,堆内存会给a一个默认的值,name的值是null,age的值是0。然后给name和age分别赋值cat,2进行输出,之后执行a.walk()方法,执行完这个程序,这个a就会出栈,然后main方法也出栈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值