类和对象的生命周期
了解了类和对象的定义与使用,下面我们再从程序运行的角度理解下类和对象的生命周期。
在程序运行的时候,当第一次通过new创建一个类的对象时,或者直接通过类名访问类变量和类方法时,Java会将类加载进内存,为这个类分配一块空间,这个空间会包括类的定义、它的变量和方法信息,同时还有类的静态变量,并对静态变量赋初始值。下一章会进一步介绍有关细节。
类加载进内存后,一般不会释放,直到程序结束。一般情况下,类只会加载一次,所以静态变量在内存中只有一份。
当通过new创建一个对象的时候,对象产生,在内存中,会存储这个对象的实例变量值,每做new操作一次,就会产生一个对象,就会有一份独立的实例变量。
每个对象除了保存实例变量的值外,可以理解为还保存着对应类型即类的地址,这样,通过对象能知道它的类,访问到类的变量和方法代码。
实例方法可以理解为一个静态方法,只是多了一个参数this。通过对象调用方法,可以理解为就是调用这个静态方法,并将对象作为参数传给this。
对象的释放是被Java用垃圾回收机制管理的,大部分情况下,我们不用太操心,当对象不再被使用的时候会被自动释放。
具体来说,对象和数组一样,有两块内存,保存地址的部分分配在栈中,而保存实际内容的部分分配在堆中。栈中的内存是自动管理的,函数调用入栈就会分配,而出栈就会释放。
堆中的内存是被垃圾回收机制管理的,当没有活跃变量
指向对象的时候,对应的堆空间就可能被释放,具体释放时间是Java虚拟机自己决定的。活跃变量就是已加载的类的类变量,以及栈中所有的变量。 []www.bilibili.com/video/BV1ss…
文章介绍了Java中类和对象的生命周期,包括类加载、对象创建、内存分配、静态变量与实例变量的区别,以及对象的释放由垃圾回收机制管理。类一旦加载通常不会释放,直到程序结束;对象通过new创建,实例变量存储在堆中,对象引用存储在栈中,当对象不再被引用时,垃圾回收器会自动释放其内存。
1369

被折叠的 条评论
为什么被折叠?



