内存图解

class car(){

string color;

string size;

run();

}

class cardemo(){

public void main(){

   car a =new car();// 在堆内存中创建对象

car b=new car();//创建对象

a.color='blue';//对堆内存中的属性进行赋值

a.size='big';

a.run();

}

class文件在内存中方法区中自动加载 执行文件的时候 先加载cardemo.class(java cardemo) 因为cardemo中有car(),然后加载car.class,同时加载成员方法和成员变量。jvm 自动加载main方法,开始执行main方法。new car()时在堆内存中开辟空间,变量进行初始化。 然后 a 被赋值。 执行a.run()的时候,run方法加载到栈内存中,在栈内存中a调用run()方法,此时的a引用的是被赋值后的堆内存中的地址值。方法执行完之后 弹栈 。main方法执行完之后也弹栈。程序执行完毕。拉基回收机制清理堆内存中的new出来的对象。 同理 ,当new出来两个对象的时候,会在堆内存中开辟两个空间,每个空间对应的不同的地址值。 尽管new出来两个对象,但是方法区中的类加载的 都是一个car.calss 。class文件只用在方法区加载一次。就可以被new 很多次。new 完的对象在程序执行完毕之后由jvm自动清理。


}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值