对象内存图(一)

1:运行程序的时候,jvm虚拟机先把TestStudent.class 通过类加载器,加载到方法区

2:开始执行TestStudent.class的程序,从上往下,从左到右。执行到main方法

3:把main方法压入栈内存开始执行

4:执行 Student student是一个类。

      4.1需要把Student.class文件通过jvm虚拟机加载到方法区。

      4.2同时new出来的对象都需要从方法区复制到堆内存中(需要对堆内存中的成员变量进行初始化,String类型初始化null,int类型初始化0),但是 堆内存的对象里面的成员方法,只是一个方法地址,指向的是方法区的对象里面的方法

4.3:  从上到下执行,

System.out.println(student);  -- com.example.demobase.day.one.Student@65b54208
System.out.println("name:"+student.name+"..........age:"+student.age);    --name:null..........age:0
student.age=1;   student.name="陈豪";  (给堆内存中的变量赋值。)
System.out.println("name:"+student.name+"...........age:"+student.age);    --name:陈豪...........age:1
student.study();。调用方法,先通过该对象的地址找到,堆内存中的对象,2:再找到该对象中的方法地址,3:最后找到方法区内的该方法,同时把这个方法压入栈内存中。执行该方法。输出   System.out.println("学习");

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值