关于java中类对象创建的内存空间

定义有一个Rectangle类,数据成员是width、length,执行语句是: Rectangle rectangle = new Rectangle(3,2);

当执行Rectangle rectangle,系统为rectangle分配内存空间,在执行rectangle = new Rectangle(3,2)时,先用构造函数创建一个对象并为其分配内存空间来存储对象的所有属性,并且初始化。
最后才是执行 ‘=’ 操作,将新创建的对象的内存空间的首地址赋给Rectangle类型的rectangle

这里把内存空间的首地址赋给Rectangle类型的rectangle是什么意思?难道为rectangle分配的内存空间存储是这个首地址的值?这其中分别分配的两片内存空间是否是等大的?有没有什么关系呢?求大神

rectangle是个引用,为其分配的地址在堆栈中,这个空间不用太大,只要能存一个内存地址的容量就够了。
而执行new的时候,会在堆中分配一块空白空间,大小视需要而定。
=就是将在堆中新分配空间的地址(可以认为是首个字节的地址)赋予堆栈中的那个地址,即引用所在的位置。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-12
new的时候
栈 堆
rectangle ------------------------------------------> new Rectangle(3,2);

(引用,保存的是后面堆对象的地址)本回答被网友采纳
第2个回答  2012-07-12
你考虑那么多干嘛!做java项目考虑内存问题不累死了

一个Java对象到底占用多大内存
在java中空对象占八个字节,对象的引用占四个字节。所以上面那条语句所占的空间是4byte+8byte=12byte.java中的内存是以8的倍数来分配的,所以分配的内存是16byte.举个例子:Class O{ int i;byte j;String s;} 其所占内存的大小是空对象(8)+int(4)+byte(1)+String引用(4)=17byte,因要...

JOL:Java 对象内存布局
首先,Java对象在堆内存中被分为三个部分:对象头、实例数据和对齐填充。对象头包含了Mark Word和Class Pointer,而数组对象则会多出一个长度字段。Mark Word存储对象的运行时数据,包括哈希码、年龄、锁状态、线程持有锁、偏向线程ID和偏向时间戳等信息。其大小取决于虚拟机位数,32位和64位的虚拟机(...

java中,StringBuffer类对象经过增加删除插入后,空间是连续的吗?
StrinbBuffer与String的区别是,String每更改一次,那么内存中都会重新划分一地址给String,每个StringBuffer创建后内存会自动划分16字节空间,StringBuffer的更改是建立在原字符串之上,当StringBuffer变更后,内存地址不变,只是在原有基础上追加,理论上讲,StringBuffer执行效率比String快 ...

java中什么是堆和栈,如何应用,最好举个例子,并详细地说明一下,谢谢了...
Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存...

java中的变量各占得字节数
boolen:1个字节int:4个字节float:4个字节double:8个字节char:2个字节byte:1个字节short:2个字节long:8个字节

java语言中int类型所占存储空间为个字节
Java语言中,int类型通常占用4个字节的存储空间。这是因为int类型在Java中是一个基本数据类型,它被存储在内存中作为一个单独的字节序列。每个字节可以表示从-128到127之间的整数。因此,一个int类型的变量需要4个字节的存储空间,以便能够存储更大的整数。此外,Java还提供了其他数据类型,如short、long、...

java新建对象的问题
实例变量初始化,将定义类时直接赋给属性的字面值 调用类的构造方法,将构造方法中的参数传给属性(如果有参数的话)2、多态的创建过程extend修饰:先声明父类引用在创建子类对象 给子类属性分配内存空间并将属性值置为默认值 递归构造父类对象:1)给父类属性分配内存空间(包括私有属性),并将属性置为...

javaheapspace的中文解释是什么?
JavaHeapSpace的中文解释是“Java堆内存空间”。Java堆内存空间是Java虚拟机在运行时分配给对象实例的区域。它是JVM所管理的最大内存区域,用于存储应用程序创建的对象和数组。以下是关于JavaHeapSpace的 1. Java堆内存空间的概念 在Java中,当创建一个对象时,这个对象会被存储在堆内存中。堆内存是动态...

java基本数据类型占用字节
1. 内存使用情况在Java中,内存使用情况是一个非常重要的问题。如果我们使用过大的数据类型,会浪费大量的内存资源,从而影响程序的性能和稳定性。比如,在Java中,用byte类型可以代替char类型,可以节省1个字节的内存空间。2. I\/O操作在Java中,数据的读写操作需要使用输入输出流,而输入输出流的性能...

我想问大佬们一个愚蠢的问题,java中对象的方法会不会占空间?如果会占空...
类的字节码会加载在jvm虚拟机中的,你新建对象,对象和其中的属性会占内存空间。跟方法毛关系没有。

相似回答