垃圾回收机制与变量周期,不成熟见解。

来源:互联网 发布:中国移动网络加速器 编辑:程序博客网 时间:2024/06/08 19:26

(一、变量的生命周期)

java变量大概可以分为两种,一种是类里面定义的叫成员变量;一种是方法里定义的,是局部变量。

而成员变量中没有static修饰的,为实例变量;被static关键字修饰的,是静态变量。

所以,java里的变量大致可以分成三种,类的非静态成员变量(实例变量)、类的静态成员变量、方法的局部变量。其生命周期或者说作用域如下细述:

1:类的非静态成员变量的生命周期取决于实例的生命周期,当创建实例的时候,实例变量被创建并分配内存,当销毁实例的时候,实例变量被销毁并撤销所占内存;

2:类的静态变量的生命周期取决于类的生命周期,当加载类的时候,静态变量被创建并分配内存空间,当卸载类的时候,静态变量被销毁并撤销所占内存;

3:方法的局部变量的生命周期只在方法的两个{}之间,超过则结束;

(二、垃圾回收机制与生命周期的关系)

以上是对生命周期的理解,但生命周期与垃圾回收机制有没有必然联系呢?据我目前的认识是,垃圾回收机制跟生命周期其实没有必然的联系,就是说垃圾回收机制,其实不能影响一个变量的生命周期,垃圾回收顶多算是为变量服务的,为防止内存溢出,做善后处理的,大约可以分为两种情况:

1:在生命周期以内,垃圾回收机制会清理掉变量不需要了实例化对象,以释放内存,但他并不能清理掉生命周期以内的变量自身所占内存;

2:在生命周期结束后,垃圾回收机制做善后处理,会对变量本身所占内存,及变量指向的实例化对象所占的内存做一个全面清理;


0 0
原创粉丝点击