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

相关文章
|
2天前
|
算法 Java 程序员
Python内存管理:请解释Python中的引用计数机制以及如何处理循环引用。描述一下Python是如何通过垃圾回收来释放不再使用的对象内存的。
Python内存管理:请解释Python中的引用计数机制以及如何处理循环引用。描述一下Python是如何通过垃圾回收来释放不再使用的对象内存的。
|
5天前
|
Java
【零基础学Java】—对象的内存图(八)
【零基础学Java】—对象的内存图(八)
|
3月前
ABAP Memory Inspector 里对动态内存对象的内存消耗度量方式
ABAP Memory Inspector 里对动态内存对象的内存消耗度量方式
23 0
|
4月前
|
缓存 关系型数据库 MySQL
高性能内存对象缓存Memcached
高性能内存对象缓存Memcached案例
|
5月前
|
存储 缓存 算法
jvm之对象实例化及直接内存解读
jvm之对象实例化及直接内存解读
|
5月前
|
存储 缓存 Java
【JVM】8. 对象实例化及直接内存(2)
8.2.3. 对齐填充(Padding) 不是必须的,也没有特别的含义,仅仅起到占位符的作用 举例
|
5月前
|
存储 算法 Java
【JVM】8. 对象实例化及直接内存(1)
8.1. 对象实例化 8.1.1. 创建对象的方式 new:最常见的方式、Xxx的静态方法,XxxBuilder/XxxFactory的静态方法 Class的newInstance方法:反射的方式,只能调用空参的构造器,权限必须是public Constructor的newInstance(XXX):反射的方式,可以调用空参、带参的构造器,权限没有要求 使用clone():不调用任何的构造器,要求当前的类需要实现Cloneable接口,实现clone() 使用序列化:从文件中、从网络中获取一个对象的二进制流
|
5月前
|
Java 编译器
java一个对象内存图
java一个对象内存图
|
7月前
|
消息中间件 Java Kafka
jvm性能调优 - 05对象在JVM内存中的分配和流转
jvm性能调优 - 05对象在JVM内存中的分配和流转
66 0
|
7月前
|
Java
java对象内存图解
java对象内存图解
54 0
热门文章
最新文章
热门文章
最新文章
相关产品
云迁移中心
推荐文章
更多