CN104391745A - 一种可扩展的对象生命周期管理方法 - Google Patents
一种可扩展的对象生命周期管理方法 Download PDFInfo
- Publication number
- CN104391745A CN104391745A CN201410536704.0A CN201410536704A CN104391745A CN 104391745 A CN104391745 A CN 104391745A CN 201410536704 A CN201410536704 A CN 201410536704A CN 104391745 A CN104391745 A CN 104391745A
- Authority
- CN
- China
- Prior art keywords
- configuration
- life cycle
- extendible
- management
- management method
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明一种可扩展的对象生命周期管理方法,包括如下步骤:步骤一:进行初始化,系统启动时加载对象生命周期管理配置;步骤二:对象创建,用户第一次请求对象时,根据配置规则查询对象存储区,当实例不存在时,根据配置中定义的生成器创建对象,并将创建出来的对象纳入到预先配置存储模块中;步骤三:对象检索,根据配置中指定的检索规则找出已经创建的对象,并返回给用户;步骤四:对象回收管理,找出已经不再被使用的对象,并把它占用的系统资源释放掉;本发明可扩展的对象生命周期管理方法基于灵活配置的对象创建、存储、检索和回收管理策略,并预留扩展接口用于满足特定场景的需求,以解决系统中多样化的对象管理问题。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种可扩展的对象生命周期管理方法。
背景技术
软件系统中经常会使用到一种对象,这种对象的创建过程比较复杂,导致这个过程在时间和空间上开销比较大;这种对象本身的状态在特定的一段时间范围内不会发生变化或者变化只影响未来的业务;并且这种对象会被不同的模块分时使用或者被不同的线程同时使用;这样的对象如果长期存在于系统内存中,会导致系统内存不足,所以就需要在合适的时间将对象回收来释放对内存的占用,提高系统整体处理能力。对于不同的数据类型,系统还需要使用不同的策略来管理。如何综合管理这种对象从创建到销毁的整个生命周期,并提供可扩展的接口来应对未来在创建、存储、销毁方向上的变化,是一个需要详细分析和处理的问题。
传统的系统中,创建和管理复杂对象方式,通常有以下几种:
1、直接创建,通过语言提供的机制显式释放;
2、通过对象池容器管理,如线程池,数据库连接池;
然而,由此引发的复杂对象频繁创建销毁导致的系统性能损失。不仅如此,对象管理的通用性和扩展都不能满足要求,尤其对于系统中多样化的对象管理需求,更是力不从心。比如:不同类型的对象需要使用不同的实例管理策略;或者同一类对象在不同的场景下也会使用不同的管理策略;其对象的创建方式,存储方式,释放策略发生变化时,系统应用程序接口(API)也会跟着改变,导致系统易维护性降低。
因此,针对上述现有技术存在的缺陷,实有必要进行开发研究,以提供一种方案,基于灵活配置的对象创建、存储、检索和回收管理策略,并为在以上几个方面发生变化预留扩展接口用于满足特定场景的需求,以解决系统中多样化的对象管理问题。
发明内容
为解决上述问题,本发明的目的在于提供一种可扩展的对象生命周期管理方法,基于灵活配置的对象创建、存储、检索和回收管理策略,并预留扩展接口用于满足特定场景的需求,以解决系统中多样化的对象管理问题。
为实现上述目的,本发明的技术方案为:
一种可扩展的对象生命周期管理方法,包括如下步骤:
步骤一:进行初始化,系统启动时加载对象生命周期管理配置;
步骤二:对象创建,用户第一次请求对象时,根据配置规则查询对象存储区,当实例不存在时,根据配置中定义的生成器创建对象,并将创建出来的对象纳入到预先配置存储模块中;
步骤三:对象检索,根据配置中指定的检索规则找出已经创建的对象,并返回给用户;
步骤四:对象回收管理,找出已经不再被使用的对象,并把它占用的系统资源释放掉。
进一步地,步骤一中,对于系统预置的数据类型或者对象处理方式不经常发生变化的场景,可以使用配置文件定义对象管理配置。
进一步地,步骤二中,在每个托管数据类型第一次被请求时,根据存储方式的配置初始化存储空间,创建对象时会记录对象创建和使用情况。
进一步地,步骤三中,根据数据类型获取存储空间,并检索已经创建的对象,更新使用情况。
进一步地,步骤四中,用户每次申请对象时,根据当前类型配置的对象回收方式确定回收哪些对象。
本发明可扩展的对象生命周期管理方法基于灵活配置的对象创建、存储、检索和回收管理策略,并预留扩展接口用于满足特定场景的需求,以解决系统中多样化的对象管理问题。
附图说明
图1为本发明的方法流程图示。
图2为本发明另一实施例的方法流程图示。
具体实施方式
本发明实施例提供了一种可扩展的对象生命周期管理方法。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本发明的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
以下分别进行详细说明。
如图1、图2所示,本发明一种可扩展的对象生命周期管理方法,包括如下步骤:
步骤一:进行初始化,系统启动时加载对象生命周期管理配置;
步骤一中,包括有如下两种配置加载方式:
1、对于系统预置的数据类型或者对象处理方式不经常发生变化的场景,可以使用配置文件定义对象管理配置。系统启动时,根据配置文件生成配置对象,注册到系统中,只有注册了配置的数据类型才能将对象生命周期委托系统来管理,简称托管。对于没有注册配置的对象,系统拒绝管理;
2、对象的创建,存储,检索和回收方式在系统启动前无法确定,需要在系统运行时使用配置对象设置并注册到系统中。
步骤一中,对象生命周期管理配置信息包有以下内容:
对象类型:用户向对象管理框架请求实例时根据此类型确定配置策略;
创建方式:可以配置为系统内置的对象创生成器或者用户自定义对象生成器,用于对象创建自定义扩展逻辑;
对象存储方式:内置了字典,堆栈和队列存储方式,以及专门为回收方式中的最近最久未使用(LRU)方式优化的环形队列。当系统内置存储方式不能满足业务规则时可以自定义对象存储数据类型,需要保证对象存储数据类型线程安全;
回收方式:系统内置了LRU,以及最少使用方式。系统达到对象回收所需的阈值,内置的回收阈值包括对象总数,对象创建时间,对象未使用时间。在步骤五中描述的回收时机执行,判定需要回收的对象。此处用户可以配置自定义对象释放规则。
其中,对象管理方式包括有:
a、单调方式(Single Call):每次请求都会创建独立的对象,不记录和保存已经创建的对象,兼容原始的对象创建策略;
b、单例方式(Singleton):只在系统第一次接到对象请求时创建此实例,并记录下来,此类型的对象释放前每次访问都会返回此对象,保证系统中只会出现此类型唯一的实例;
c、池化方式(Object Pool):通过对象池管理实例,每次创建出来的对象都被存储池管理。
对象生存周期包括有:
1)会话级:对象生存周期在会话范围内,每次系统会话结束将此会话范围内创建的所有对象统统释放;
2)进程级:对象生存周期在整个系统进程范围内,直到系统进程结束才会释放所有对象;
3)非托管:只针对单调方式,系统不管理创建出来的对象。
步骤二:对象创建,用户第一次请求对象时,根据配置规则查询对象存储区,发现实例不存在,根据配置中定义的生成器创建对象,并将创建出来的对象纳入到预先配置存储模块中;
步骤二中,在每个托管数据类型第一次被请求时根据存储方式的配置初始化存储空间。创建对象时会记录对象创建和使用情况,如创建时间,最近使用时间、使用次数计数器。
步骤三:对象检索,根据配置中指定的检索规则找出已经创建的对象,并返回给用户;
步骤三中,根据数据类型获取存储空间,并检索已经创建的对象,更新使用情况,包括但不限于最近使用时间、使用次数计数器,用于对象回收策略判定。
步骤四:对象回收管理,找出已经不再被使用的对象,并把它占用的系统资源释放掉。
用户每次申请对象时,根据当前类型配置的对象回收方式确定回收哪些对象。回收方式中记录回收实例需要满足的对象阈值,包括但不限于空闲时间,当前存储区中的此类对象记录总数。
本发明实施例提供了两种回收对象选择方式:
LRU方式:系统执行过程中根据对象访问历史来推测未来的行为。认为过去一段时间里不曾被访问过的对象,在最近的将来可能也不会再被访问。所以,这种算法的实质是:当需要回收一个对象时,总是选择在最近一段时间内最久不用的对象予以回收。
最少使用方式:选择系统中被使用次数最少的对象予以回收;如果内置的对象选择方式不能满足需要,可以通过配置自定义对象选择方式。
步骤四中将选择出来的需要回收的对象从存储空间中移动到回收对象队列,此队列中的对象如果使用到自定义资源处置策略(实现IDisposable接口),框架会提前执行处置方法,释放对象内部管理的托管和非托管资源,然后对象被纳入到系统垃圾回收策略中,从系统内存中被彻底清理掉。
以下以ERP系统中的使用为例进行说明,ERP系统中经常使用工作流动态管理工作中的过程和流转,工作流过程定义对象一般比较复杂,创建过程相对耗时比较多,而且一旦创建在整个进程生命周期范围内都不会发生变化。在一次业务交互过程中会反复访问这个对象,以获取流程相关控制信息,如果每次访问都去创建,系统会在无谓的工作上花费太多开销,可以使用对象生命周期管理框架来管理,包括如下步骤:
步骤一:通过对象生命周期管理框架配置InstanceConfig注册数据类型,此类型主要属性有:
class InstanceConfig{
/// 存储类型
public InstanceStoredType StoredType { get; set; }
/// 实例释放方式
public InstanceReleaseType ReleaseType { get; set; }
/// 超时时间
public TimeSpan IdleTimeOut { get; set; }
/// 最大实例数
public int Capacity { get; set; }
/// 生成器实例
public IInstanceBuilder Builder{get;set; }
}
在此例中,在系统启动时通过配置文件注册元数据配置。其中,元数据类型的实例存储类型为进程级单例,释放方式为最近最久未使用方式(LRU),保证在合适的时机释放对象,不至于出现内存泄漏。生成器使用内置的元数据生成器,在元数据第一次被使用时查询元数据库并生成元数据对象。对于业务数据需要将存储类型设置为回话级,避免出现并发修改导致的数据不一致问题。
步骤二:系统启动时加载步骤一注册的配置文件,为后续的执行逻辑做准备。第一次用户调用InstanceLifecycleManager获取对象时会使用InstanceConfig中注册的Builder创建对象实例,此类型的主要成员有:
///获取实例
public TValue GetInstance<TValue>(params object[] builderArgs)
在此例中用户代码第一次调用GetInstance<元数据类型>()方法,就可以使用之前已经注册的元数据生成器创建元数据实例。
步骤三:在对象超时释放前通过上述GetInstance方法获取的对象总是同一个实例,这样就避免了重复创建相同对象带来的开销。每次重新请求获取这个对象,总会刷新最近使用时间此属性记录在InstanceWrapper实例中,每个被对象生命周期管理框架管理的对象都会有一个InstanceWrapper实例记录对象的使用状况。
步骤四:在此例中,当系统执行了一段时间,有些元数据长时间没有被访问,超过了Config中配置的最大超时时间,在单例模式下,InstanceWrapper内部会有一个计时器会触发超时事件将内部存储的对象释放掉,元数据对象内部的处置方法(Dispose)会被执行,用来释放当前对象持有的其他资源,最后这个对象被系统垃圾回收,完成了它在系统中的整个生命周期。
上面提到的是能够覆盖80%以上业务场景的情况,都使用框架内部提供的应用程序接口就可以完成对象管理任务。对于不能满足需求的特殊场景,需要用户自定义对象管理策略来实现对象创建,存储,查询,销毁的过程。
对于需要注册创建过程的类型,需要一个实现IInstanceBuilder了接口的对象生成器,并将这个生成器注册到Config中;对于存储和销毁策略需要扩展的场景,需要实现一个IInstanceStore接口的对象存储器同样需要注册到Config的StoreType和ReleaseType中,这样在运行时可以使用自定义类型完成对象整个生命周期的定制化管理。但是这个过程需要保证存储器是线程安全的,避免出现并发修改问题。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (5)
1.一种可扩展的对象生命周期管理方法,其特征在于,包括如下步骤:
步骤一:进行初始化,系统启动时加载对象生命周期管理配置;
步骤二:对象创建,用户第一次请求对象时,根据配置规则查询对象存储区,当实例不存在时,根据配置中定义的生成器创建对象,并将创建出来的对象纳入到预先配置存储模块中;
步骤三:对象检索,根据配置中指定的检索规则找出已经创建的对象,并返回给用户;
步骤四:对象回收管理,找出已经不再被使用的对象,并把它占用的系统资源释放掉。
2.如权利要求1所述可扩展的对象生命周期管理方法,其特征在于,步骤一中,对于系统预置的数据类型或者对象处理方式不经常发生变化的场景,可以使用配置文件定义对象管理配置。
3.如权利要求2所述可扩展的对象生命周期管理方法,其特征在于,步骤二中,在每个托管数据类型第一次被请求时,根据存储方式的配置初始化存储空间,创建对象时会记录对象创建和使用情况。
4.如权利要求3所述可扩展的对象生命周期管理方法,其特征在于,步骤三中,根据数据类型获取存储空间,并检索已经创建的对象,更新使用情况。
5.如权利要求4所述可扩展的对象生命周期管理方法,其特征在于,步骤四中,用户每次申请对象时,根据当前类型配置的对象回收方式确定回收哪些对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410536704.0A CN104391745A (zh) | 2014-10-13 | 2014-10-13 | 一种可扩展的对象生命周期管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410536704.0A CN104391745A (zh) | 2014-10-13 | 2014-10-13 | 一种可扩展的对象生命周期管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104391745A true CN104391745A (zh) | 2015-03-04 |
Family
ID=52609653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410536704.0A Pending CN104391745A (zh) | 2014-10-13 | 2014-10-13 | 一种可扩展的对象生命周期管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104391745A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105843686A (zh) * | 2016-03-29 | 2016-08-10 | 乐视控股(北京)有限公司 | 单例组件资源释放方法及装置 |
CN106020730A (zh) * | 2016-05-25 | 2016-10-12 | 青岛海信移动通信技术股份有限公司 | 一种移动设备的多媒体数据的清理方法和装置 |
CN110764913A (zh) * | 2019-10-28 | 2020-02-07 | 卫盈联信息技术(深圳)有限公司 | 基于规则调用的数据计算方法、客户端及可读存储介质 |
CN111273968A (zh) * | 2020-01-17 | 2020-06-12 | 上海米哈游天命科技有限公司 | 一种对象调用方法、装置、设备及介质 |
CN112988279A (zh) * | 2021-04-16 | 2021-06-18 | 广州南方卫星导航仪器有限公司 | 一种对象处理方法、装置、电子设备及存储介质 |
CN113778571A (zh) * | 2021-09-13 | 2021-12-10 | 深圳市快易典教育科技有限公司 | 一种对象池访问方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040254975A1 (en) * | 2003-06-14 | 2004-12-16 | Teh Jin Teik | Method for managing applications and data in a limited capabilities environment via remote virtual hosting and management |
CN1643517A (zh) * | 2002-03-29 | 2005-07-20 | 国际商业机器公司 | 生命周期管理引擎 |
CN102231194A (zh) * | 2009-10-30 | 2011-11-02 | 国际商业机器公司 | 一种管理对象的生命周期的方法和系统 |
EP2525291A1 (en) * | 2010-05-11 | 2012-11-21 | ZTE Corporation | Application program management method and device |
CN103425532A (zh) * | 2013-08-27 | 2013-12-04 | 北京京东尚科信息技术有限公司 | 一种java无状态对象的管理方法和装置 |
-
2014
- 2014-10-13 CN CN201410536704.0A patent/CN104391745A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1643517A (zh) * | 2002-03-29 | 2005-07-20 | 国际商业机器公司 | 生命周期管理引擎 |
US20040254975A1 (en) * | 2003-06-14 | 2004-12-16 | Teh Jin Teik | Method for managing applications and data in a limited capabilities environment via remote virtual hosting and management |
CN102231194A (zh) * | 2009-10-30 | 2011-11-02 | 国际商业机器公司 | 一种管理对象的生命周期的方法和系统 |
EP2525291A1 (en) * | 2010-05-11 | 2012-11-21 | ZTE Corporation | Application program management method and device |
CN103425532A (zh) * | 2013-08-27 | 2013-12-04 | 北京京东尚科信息技术有限公司 | 一种java无状态对象的管理方法和装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105843686A (zh) * | 2016-03-29 | 2016-08-10 | 乐视控股(北京)有限公司 | 单例组件资源释放方法及装置 |
CN106020730A (zh) * | 2016-05-25 | 2016-10-12 | 青岛海信移动通信技术股份有限公司 | 一种移动设备的多媒体数据的清理方法和装置 |
CN110764913A (zh) * | 2019-10-28 | 2020-02-07 | 卫盈联信息技术(深圳)有限公司 | 基于规则调用的数据计算方法、客户端及可读存储介质 |
CN111273968A (zh) * | 2020-01-17 | 2020-06-12 | 上海米哈游天命科技有限公司 | 一种对象调用方法、装置、设备及介质 |
CN112988279A (zh) * | 2021-04-16 | 2021-06-18 | 广州南方卫星导航仪器有限公司 | 一种对象处理方法、装置、电子设备及存储介质 |
CN113778571A (zh) * | 2021-09-13 | 2021-12-10 | 深圳市快易典教育科技有限公司 | 一种对象池访问方法、装置、电子设备及存储介质 |
CN113778571B (zh) * | 2021-09-13 | 2024-03-29 | 深圳市快易典教育科技有限公司 | 一种对象池访问方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104391745A (zh) | 一种可扩展的对象生命周期管理方法 | |
CN107463635B (zh) | 一种图片数据查询的方法和分布式NewSQL数据库系统 | |
US9547536B2 (en) | Connection handler and method for providing applications with heterogeneous connection objects | |
EP3796150B1 (en) | Storage volume creation method and apparatus, server, and storage medium | |
CN104808952B (zh) | 数据缓存方法及装置 | |
US20150317246A1 (en) | Memory Reclamation Method and Apparatus | |
CN105630865A (zh) | 用于内存列式存储的n比特压缩版本化列数据阵列 | |
CN104679594B (zh) | 一种中间件分布式计算方法 | |
EP3283965B1 (en) | Reducing memory commit charge when compressing memory | |
CN103635876A (zh) | 用于未经修改的应用的存储器管理模型和接口 | |
CN101673192A (zh) | 时序化的数据处理方法、装置及系统 | |
CN108491264A (zh) | 一种适用于异构云的统一资源回收管理方法 | |
US11249968B2 (en) | Large object containers with size criteria for storing mid-sized large objects | |
CN115951839A (zh) | 分区命名空间固态硬盘的数据写入方法、装置及电子设备 | |
CN104035925A (zh) | 数据存储方法、装置和存储系统 | |
CN111857977B (zh) | 弹性伸缩方法、装置、服务器和存储介质 | |
CN114840272B (zh) | 一种多数据源动态规划及监测系统、方法 | |
CN111767139A (zh) | 一种跨地域多数据中心资源云服务建模方法及系统 | |
CN107943423A (zh) | 云系统中存储资源的管理方法和计算机可读存储介质 | |
CN107181773A (zh) | 分布式存储系统的数据存储及数据管理方法、设备 | |
CN110058923B (zh) | 一种基于动态预取策略的Docker容器COW机制优化方法及系统 | |
CN105469173A (zh) | 一种静态内存进行优化管理的方法 | |
CN111917573B (zh) | 监控方法、监控系统及计算设备 | |
CN110543357B (zh) | 管理应用程序对象的方法,相关装置及系统 | |
CN110457379A (zh) | 一种业务处理的方法及其架构系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150304 |