欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

对象的生命周期

程序员文章站 2022-04-16 08:20:49
在解释“对象的生命周期”前,先来看下面这个例子: 有一个停车场共50个停车位,假如这个停车场是通过人工来管理停车位的使用情况,管理员有一个计数器,用来计录当前空闲的停车位有多少个,每当有新的停车位被使用了计数器就减1,而有新的停车位空闲了计数器就加1。 我们可以把这些停车位理解为【资源空间】,可支配 ......

在解释“对象的生命周期”前,先来看下面这个例子:

有一个停车场共50个停车位,假如这个停车场是通过人工来管理停车位的使用情况,管理员有一个计数器,用来计录当前空闲的停车位有多少个,每当有新的停车位被使用了计数器就减1,而有新的停车位空闲了计数器就加1。

我们可以把这些停车位理解为【资源空间】,可支配的最大资源数为50(即停车位数量),记录资源使用情况的管理员可理解为资源的观察者(每当资源发生变化就对停车位进行计数)。

那么会存在有这样的场景,50个停车位都被使用了,如果有新来的车,那么就不允许进入停车场。这种场景可以理解为资源不足。

而计算机中的【内存】也跟【停车场】差不多,我们通常说的内存有4g、8g、16g等,那么该内存最多能够存储的数据量就是4g、8g、16g等,如果当前内存使用情况已达到瓶颈的话,运行的程序就会出现故障。

当内存使用达到瓶颈时,运行的程序为什么会出现故障?

因为计算机在运行一个程序的时候,会把要用到的数据先写入内存空间。当内存不足时,程序就无法继续对数据在内存上进行操作,此时就会导致程序故障。更具体的一些知识点,朋友们可以去查阅相关资料:程序是如何被计算机所执行的,本文不做讨论研究,因为这个问题本身就有很多可讨论的知识点。

上面解释到,计算机在运行一个程序的时候,会把要用到的数据先写入内存空间。这就相当于某些停车位被使用了(即资源空间被使用),而在内存中的表现就是占用了一块内存空间。但是内存的空间大小是有限的,那么在程序中什么时候会占用内存空间?并且有没有类似停车位的管理员一样的角色,来观察程序的相关使用情况呢?

先思考下程序中类的概念,虽然我们可以用“类”将生活中的各种事物进行抽象化来在程序中进行描述。但是“类”不能代表一个具体的东西,而这个具体的东西是以“对象”来表达,那么我们要想在程序中得到这个具体的“对象”则是需要【创建类的实例】来获取,这也就认证了前面文章所说的“类的具体实例就叫做对象”。那么这个“创建类的实例”也就是一个具体的【对象】诞生了,此时会在内存中占用一块空间。当这个具体的【对象】不再被使用后(相当于车离开了停车场,不需要使用停车位了),那么在程序中会有一个叫gc(垃圾回收机制)的东西来负责管理对象使用情况,类似停车场的管理员,职责就是:观察不再被使用的具体【对象】有哪些,然后将其销毁,腾出内存空间。gc(垃圾回收机制)管理对象的使用情况的详细说明本文暂不作讨论。

那么现在回到“生命周期”这个词,对于人来说就是从出生到死亡的一个过程。

所以在程序中,一个“对象的生命周期”就是指:对象的创建到使用结束后被销毁的一个过程。