本发明涉及计算机技术领域,特别是涉及一种变量回收方法及装置。
背景技术:
在软件开发过程中,我们通常会定义一些变量来完成功能的实现,而这些变量在运行过程中要存在内存中。如果没有垃圾回收机制,则随着运行时间的延长,内存就会被消耗殆尽,会影响应用程序的运行,比如对于浏览器会出现卡顿现象,出现崩溃。
为解决上述问题,各类编程语言有独特的或者共同的垃圾回收机制。目前,浏览器端的语言主要有两种变量回收方式,一种是标记清除,即在变量声明时,标记其所在的环境变量,离开环境则回收该变量。第二种为引用计数,即跟踪记录每个值被使用的次数,当声明一个变量,毎次将一个引用类型赋值给该变量时,这个值的引用次数就加一,如果该变量的值成为另外一个,则这个值的引用次数减一,当这个值的引用次数变为零时,则将其占用的空间回收。但这两种回收方式都存在对变量回收不及时的弊端。
技术实现要素:
本发明的目的是提供一种变量回收方法及装置。能够及时地将变量回收,克服了现有技术的弊端。
为实现上述目的,本发明提供如下技术方案:
一种变量回收方法,包括:
在对变量声明时,对所述变量赋予标识,所述标识指示所述变量被回收的条件;
在程序运行中,当满足所述变量被回收的条件时,将所述变量回收,从内存中移除。
可选地,所述变量被回收的条件为所述变量被回收的时刻;
所述在程序运行中,当满足所述变量被回收的条件时,将所述变量回收包括:
在程序运行中,当到达所述标识指示的时刻时,将所述变量回收。
可选地,所述变量被回收的条件为所述变量在预设位置被引用;
所述在程序运行中,当满足所述变量被回收的条件时,将所述变量回收包括:
在程序运行中,当所述变量在所述预设位置被引用后,将所述变量回收。
可选地,在所述在对变量声明时,对所述变量赋予标识之前还包括:
根据所述变量,为所述变量设计用于指示所述变量被回收的条件的所述标识。
可选地,所述程序为浏览器应用程序。
一种变量回收装置,包括:
标识模块,用于在对变量声明时,对所述变量赋予标识,所述标识指示所述变量被回收的条件;
回收模块,用于在程序运行中,当满足所述变量被回收的条件时,将所述变量回收,从内存中移除。
可选地,所述变量被回收的条件为所述变量被回收的时刻;
所述回收模块用于在程序运行中,当满足所述变量被回收的条件时,将所述变量回收包括:
所述回收模块具体用于在程序运行中,当到达所述标识指示的时刻时,将所述变量回收。
可选地,所述变量被回收的条件为所述变量在预设位置被引用;
所述回收模块用于在程序运行中,当满足所述变量被回收的条件时,将所述变量回收包括:
所述回收模块具体用于在程序运行中,当所述变量在所述预设位置被引用后,将所述变量回收。
可选地,还包括设计模块,用于在对变量声明时,对所述变量赋予标识之前,根据所述变量,为所述变量设计用于指示所述变量被回收的条件的所述标识。
可选地,所述程序为浏览器应用程序。
由上述技术方案可知,本发明所提供的变量回收方法及装置,通过在对变量声明时,对变量赋予标识,该标识指示所述变量被回收的条件,在程序运行中,当满足所述变量被回收的条件时,则将变量回收,从内存中移除。本发明变量回收方法及装置,能够及时地将变量回收,可克服现有方法对变量回收不及时的缺陷。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种变量回收方法的流程图;
图2为本发明实施例提供的一种变量回收装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
请参考图1,本发明实施例提供的一种变量回收方法,包括以下步骤:
s10:在对变量声明时,对所述变量赋予标识,所述标识指示所述变量被回收的条件。
在软件开发中,在声明变量时,根据变量的实际情况给变量赋予标识,所述标识指示了所述变量应该被回收时要满足的条件。
在一种具体实施方式中,所述变量被回收的条件为所述变量被回收的时刻,也就是在程序运行中,在哪一时刻时该变量被引用完,不再使用,可以将其回收。这种情形下可根据变量的实际情况,为变量赋予标识,标识指示变量被回收的时刻。
在又一种具体实施方式中,所述变量被回收的条件为所述变量在预设位置被引用,也就是在程序运行中,该变量在哪一位置被引用后,该变量不再被使用,可以将其回收。这种情形下,可以根据变量实际情况,为变量赋予标识,标识指示变量被预设位置引用后可以被回收。
另外,在具体实施时,在步骤s10之前,还包括步骤s13:根据所述变量,为所述变量设计用于指示所述变量被回收的条件的所述标识。
在对变量声明前,根据该变量的实际情况,为变量设计标识,确定该变量在被回收时应满足的条件。对应于上述两种实施方式中,为变量设计标识,标识指示变量被回收时刻或者位置。
s11:在程序运行中,当满足所述变量被回收的条件时,将所述变量回收,从内存中移除。
在程序运行中,变量被多次引用,当满足所述标识指示的变量被回收的条件时,将变量回收,从内存中移除,从而将内存释放。则该变量不再可以被使用,除非再次重新声明。
所述变量被回收的条件可以是所述变量被回收的时刻,在这种方式下,本步骤具体包括:在程序运行中,当到达所述标识指示的时刻时,将所述变量回收。
因此,本实施例变量回收方法,通过给变量赋予标识,标识指示变量被回收的时间,在程序运行中当达到标识指示的时刻时则将变量回收,从而能够及时地将变量回收,及时地将不需要存放在内存中的变量从内存中移除,可以克服现有方法对变量回收不及时的缺陷。
可选的,所述变量被回收的条件可以是所述变量在预设位置被引用。相应这种方式下,本步骤具体包括:在程序运行中,当所述变量在所述预设位置被引用后,将所述变量回收。
因此,本实施例变量回收方法,通过给变量赋予标识,标识指示变量在被预设位置引用后应被回收,在程序运行中当变量在标识指示的位置被引用后,则将变量回收,从而能够及时地将变量回收,及时地将不需要存放在内存中的变量从内存中移除,可以克服现有方法对变量回收不及时的缺陷。
本实施例变量回收方法,能够及时地将变量回收,及时地将不需要存放在内存中的变量从内存中移除,可以克服现有方法对变量回收不及时的缺陷,避免造成内存溢出、内存不足等现象,有助于提高内存利用率以及系统运行速度。
本实施例变量回收方法可应用于浏览器程序开发,或者也可应用于其它应用程序的开发中。
相应的,请参考图2,本发明实施例还提供一种变量回收装置,包括:
标识模块20,用于在对变量声明时,对所述变量赋予标识,所述标识指示所述变量被回收的条件;
回收模块21,用于在程序运行中,当满足所述变量被回收的条件时,将所述变量回收,从内存中移除。
可以看出,本实施例变量回收装置,通过在对变量声明时,对变量赋予标识,该标识指示所述变量被回收的条件,在程序运行中,当满足所述变量被回收的条件时,则将变量回收,从内存中移除。本实施例变量回收装置,能够及时地将变量回收,可克服现有方法对变量回收不及时的缺陷。
在一种具体实施方式中,所述变量被回收的条件为所述变量被回收的时刻,也就是在程序运行中,在哪一时刻时该变量被引用完,不再使用,可以将其回收。这种情形下可根据变量的实际情况,为变量赋予标识,标识指示变量被回收的时刻。
相应的,所述回收模块21具体用于在程序运行中,当到达所述标识指示的时刻时,将所述变量回收。
因此,本实施例变量回收装置,通过给变量赋予标识,标识指示变量被回收的时间,在程序运行中当达到标识指示的时刻时则将变量回收,从而能够及时地将变量回收,及时地将不需要存放在内存中的变量从内存中移除,可以克服现有方法对变量回收不及时的缺陷。
在又一种具体实施方式中,所述变量被回收的条件为所述变量在预设位置被引用,也就是在程序运行中,该变量在哪一位置被引用后,该变量不再被使用,可以将其回收。这种情形下,可以根据变量实际情况,为变量赋予标识,标识指示变量被预设位置引用后可以被回收。
相应的,所述回收模块21具体用于在程序运行中,当所述变量在所述预设位置被引用后,将所述变量回收。
因此,本实施例变量回收装置,通过给变量赋予标识,标识指示变量在被预设位置引用后应被回收,在程序运行中当变量在标识指示的位置被引用后,则将变量回收,从而能够及时地将变量回收,及时地将不需要存放在内存中的变量从内存中移除,可以克服现有方法对变量回收不及时的缺陷。
进一步的,本实施例变量回收装置还包括设计模块,用于在对变量声明时,对所述变量赋予标识之前,根据所述变量,为所述变量设计用于指示所述变量被回收的条件的所述标识。
在对变量声明前,根据该变量的实际情况,通过设计模块为变量设计标识,确定该变量在被回收时应满足的条件。对应于上述两种实施方式中,为变量设计标识,标识指示变量被回收时刻或者位置。
本实施例变量回收装置可应用于浏览器程序开发,或者也可应用于其它应用程序的开发中。
以上对本发明所提供的一种变量回收方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。