java两个对象内存图

简介: 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的垃圾回收机制,会在不定时对其进行回收

微信图片_20230701153201.jpg

相关文章
|
3天前
|
算法 Java Go
Go vs Java:内存管理与垃圾回收机制对比
对比了Go和Java的内存管理与垃圾回收机制。Java依赖JVM自动管理内存,使用堆栈内存并采用多种垃圾回收算法,如标记-清除和分代收集。Go则提供更多的手动控制,内存分配与释放由分配器和垃圾回收器协同完成,使用三色标记算法并发回收。示例展示了Java中对象自动创建和销毁,而Go中开发者需注意内存泄漏。选择语言应根据项目需求和技术栈来决定。
|
1天前
|
存储 机器学习/深度学习 Java
【Java探索之旅】数组使用 初探JVM内存布局
【Java探索之旅】数组使用 初探JVM内存布局
9 0
|
2天前
|
安全 Java 编译器
Java面向对象思想以及原理以及内存图解(下)
Java面向对象思想以及原理以及内存图解(下)
10 0
|
2天前
|
Java
Java面向对象思想以及原理以及内存图解(上)
Java面向对象思想以及原理以及内存图解
9 0
|
6天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
|
6天前
|
设计模式 存储 Java
[设计模式Java实现附plantuml源码~结构型]实现对象的复用——享元模式
[设计模式Java实现附plantuml源码~结构型]实现对象的复用——享元模式
|
6天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~结构型]对象的间接访问——代理模式
[设计模式Java实现附plantuml源码~结构型]对象的间接访问——代理模式
|
6天前
|
设计模式 JavaScript 前端开发
[设计模式Java实现附plantuml源码~创建型] 复杂对象的组装与创建——建造者模式
[设计模式Java实现附plantuml源码~创建型] 复杂对象的组装与创建——建造者模式
|
6天前
|
设计模式 Java Go
[设计模式Java实现附plantuml源码~创建型] 对象的克隆~原型模式
[设计模式Java实现附plantuml源码~创建型] 对象的克隆~原型模式
|
6天前
|
设计模式 安全 Java
[设计模式Java实现附plantuml源码~创建型] 确保对象的唯一性~单例模式
[设计模式Java实现附plantuml源码~创建型] 确保对象的唯一性~单例模式