理解Java中对象实例化过程是很重要的,实例化过程主要步骤如下:
第1步:在创建类之前,检查类是否加载(是将硬盘上的.class文件加载到内存中),如果没有加 载就加载这个类,在这个类加载之前要加载所有父类。
Java运行时采用的策略:懒惰式加载(按需加载):如果第一次用到就加载,只加载一次。通过CLASSPATH指定的路径寻找类文件(.class),加载以后是一个对象,类型是Class。
第2步:在内存堆中分配对象空间。递归分配所有父类和子类属性空间。
属性默认自动初始化。自动初始化为“0”值。
第3步:进行属性的赋值。
第4步:递归调用父类构造器。(默认调用父类无参数构造器!)
第5步:调用本类构造器。
Java的内存管理与分配
1、栈是一块Java使用内存区域,使用的方式:LIFO(后来者居上)。
2、堆也是一块Java使用内存区域,使用方式:随机分配。
局部变量与堆对象空间分配
1、Java局部变量和方法参数在栈中分配,大小是按照变量的类型分配。
2、对象在堆中分配,按照类中声明属性(实例变量)分配空间。
变量类型与分配
1、变量分为:基本类型和引用类型。
2、基本类型变量的空间大小:就是基本类型的空间大小,值是基本类型的值。
3、引用变量的值是一个对象的地址值,引用变量通过地址引用了一个堆对象。
4、引用类型变量的占用空间大小和值管理是“透明的(不可看见)”由Java系统管理:变量占用空间以及值的管理,都是透明的。
网友评论