Java 对象的内存模型

    科技2022-07-20  103

    对象的内存模型

    声明对象时的内存模型:我们在声明对象变量后,对象的内存还没有任何数据,此时我们称这个对象是一个空对象。

    空对象不能使用,因为它还没有得到任何“实体”,必须再进行为对象分配变量的操作,即为对象分配实体。

    为对象分配变量后的内存模型

    先为成员变量分配内存,然后执行构造方法中的语句。

    如果成员变量在声明时没有指定初值,所使用的构造方法也没有对成员变量进行初始化操作,那么,对于整型的成员变量,默认初值是0;浮点型,默认初值是0.0;布尔型,默认初值是false;引用型,默认初值是nullnew ShuiHuZhuan();

    new运算符在为成员变量分配好内存后,将计算出一个称作引用的值(该值包含着代表这些成员变量的内存以及相关的重要信息),即new ShuiHuZhuan();是一个值。如果把该值赋给wusong:

    wusong = new ShuiHuZhuan();

    那么Java系统分配的成员变量的内存单元将由wusong操作管理。

    总结:所谓创建对象,就是指为对象分配变量,并获得一个引用,以确保这些变量由该对象来操作管理。

    创建多个不同的对象

    一个类可以通过使用new运算符创建多个不同的对象,这些对象的变量将被分配不同的内存空间。

    wusong = new ShuiHuZhuan(); linchong = new ShuiHuZhuan();

    注:

    对象的引用存在栈中,对象的实体(分配给对象的变量)存在堆中。

    栈的优势是,存取速度比堆要快。缺点是,存在栈中的数据大小与生存周期必须是确定的,缺乏灵活性。堆的优势是,可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
    Processed: 0.009, SQL: 8