java两个对象内存图

class Demo_Car{
    public static void main(String[] args){
        Car c1 = new Car();
        c1.color = "red";
        c1.num = 8;
        c1.run();
        
        Car c2 = new Car();
        c2.color = "black";
        c2.num = 4;
        c2.run();
        
        c2 = null;
        c2.run(); //此处会报空指针异常,因为c2此时记录的是null
    }
}

class Car{
    String color;
    int num;
    public void run(){
        System.out.println(color+"..."+num);
    }
}

相关过程与《java一个对象的内存图》一样,

不同的是:(1)c2在创建时,不需要再在方法区中放入Car.class了,因为之前c1的时候已经有了,同时c2也在堆中创建一个对象。

(2)在执行c2 = null这个命令后,c2原先创建的堆中对象的地址就不再记录了,在堆中的被c2创建的对象由于没有任何引用指向它,就成为了垃圾,java中有完善的 java的垃圾回收机制,会在不定时对其进行回收
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员一修

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值