一种节省内存开销的插件加载方法技术

技术编号:3871227 阅读:321 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种节省内存开销的插件加载方法,包括步骤:A1.建立并存储与插件对应的插件描述文件;A2.运行插件内核管理器,将所述插件描述文件存储的调用插件所需信息在所述插件内核管理器内进行注册;A3.调用插件时,根据所述插件在所述插件内核管理器内的注册信息加载相关插件。本发明专利技术节省内存开销的插件加载方法采用“虚加载”的方法来处理插件的加载,即通过插件内核管理器来管理插件的相关信息,只有在实际需要插件时才将插件加载到内存中,这样就减小了内存的开销,提高了计算机内存的使用效率。

【技术实现步骤摘要】

本专利技术涉及计算机
,具体涉及一种节省内存开销的插件加 载方法。
技术介绍
我们对插件系统并不陌生,它可以按照一些规则对内核进行扩展从而实现各种各样的功能,现有技术中有基于DLL的导出函数的插件模式,还有基于COM接口的插件模式。普通的系统,在编译发布之后,系统就不允许进行更改或扩充了,如果要进行某个功能的扩充,则必须要修改代码重新编译发布,而使用插件可以很好地避免这个问题。随着计算机硬件性能的不断提升, 一般计算机的内存容量已经达到G的水平了 ,这就容易忽略程序对内存的占用以及内存开销所造成的浪 费问题。内存再大,终究是有限的,如果我们对内存中的程序的加载过 程不考虑优化,那么最终会导致系统不堪重负,变得緩慢而错误频频。比如我们熟悉的Photoshop软件,启动的时候要加载很多"滤镜,,插 件,但是在处理图像的过程中,可能根本就用不到这些功能,在内存中 加载这些不被使用的"滤镜"插件显然造成了内存开销的浪费。
技术实现思路
本专利技术要解决的技术问题是提供一种节省内存开销的插件加载方 法,克服现有技术的插件加载方法造成内存开销浪费的缺陷。本专利技术为解决上述技术问题所采用的技术方案为,包括步骤Al、建立并存储与插件对应的插件描述文件;A2、运行插件内核管理器,将所述插件描述文件存储的调用插件所需信息在所述插件内核管理器内进^f亍注册; A3、调用插件时, 一艮据所述插件在所述插件内核管理器内的注册信息加栽相关插件。所述的节省内存开销的插件加载方法,其中所述插件描述文件设为 XML描述符文件。所述的节省内存开销的插件加载方法,其中所述插件描述文件包括 基本信息字段plugin 、依赖插件信息字段required 、功能定义信息字段 define和功能实现信息字段implement。所述的节省内存开销的插件加载方法,其中所述基本信息字段 plugin存储的信息包括插件标识符ID。所述的节省内存开销的插件加载方法,其中依赖插件信息字段 required存储的信息包括与所述插件有依赖关系的插件标识符ID。所述的节省内存开销的插件加载方法,其中所述插件内核管理器包 括插件管理器、功能定义管理器和功能实现管理器。所述的节省内存开销的插件加载方法,其中所述步骤A2包括步骤 将所述基本信息字段plugin的内容和所述依赖插件信息字段required的 内容注册到所述插件管理器。所述的节省内存开销的插件加载方法,其中所述步骤A2包括步骤 将所述功能定义信息字段define的内容注册到所述功能定义管理器。所述的节省内存开销的插件加载方法,其中所述步骤A2包括步骤将所述功能实现信息字段implement的内容注册到所述功能实现管理 器。所述的节省内存开销的插件加载方法,其中所述插件内核管理器还 包括事件和消息管理器,由所述事件和消息管理器触发插件的加载。本专利技术的有益效果本专利技术节省内存开销的插件加载方法采用"虚加 载,,的方法来处理插件的加载,即通过插件内核管理器来管理插件的相关 信息,只有在实际需要插件时才将插件加载到内存中,这样就减小了内 存的开销,提高了计算机内存的使用效率。附图说明本专利技术包括如下附图图1为本专利技术插件内核管理器示意图2为本专利技术插件信息注册过程流程图3为本专利技术插件加载过程流程图4为本专利技术插件功能实现函数调用流程图5为本专利技术未发生功能调用时内存占用对比示意图6为本专利技术发生功能调用时内存占用对比示意图。具体实施例方式下面根据附图和实施例对本专利技术作进一步详细说明 表l是与插件调用有关的信息,本专利技术采用XML描述符来描述插件的 相关信息,先给出一个插件描述文件的实例。1 〈 xml version="1.0" encoding="UTF-8" >2 <plugins>3 <plugin id="MainPlugin" name="MainPlugin" ver="1.0"desc="MainPlugin'4 provider="Winduo Corp." lib="Mainplugin.dll">5 <define6 fLmcID="platform.ui.main.buttonlist"7 name="main.buttonlist"8 procname="UI_ButtonList">9 </defme>10 〈define11 funcID="platform.ui.main.formlist"12 name="main.formlist"13 procname="UI—FormList">14 </define>15 〈implement16 flmcID="platform.start"17 id-"platform.start.MainPlugin"18 name="MainStart"19 procname="MainStart">20 </implement>21 <required>22 <id=,,platform.base">23 <id="platform.ui">24 </required>25 </plugin>26 </plugins>在上面的XML文本中,3、 4行是对插件基本信息的描述,id属性描 述了插件的唯一标识(插件标识符ID) , name描述插件的名称,ver标 识版本号,desc表示备注,provider表示作者,lib表示插件DLL的路径, 这里只用dll相对于描述文本的路径。依赖关系(依赖插件信息)用来描述该插件正常运行所必须的其他插件,在上面的XML文本中的第21-24行,显示了对插件依赖关系的描 述方法々equired〉节中将其他插件的标识符id (插件标识符ID)分别列 出。表1<table>table see original document page 8</column></row><table>功能实现是指本插件实现的功能定义。由于各个功能需要的参数不同,本专利技术采用XML子项来描述各种不同的参数。文本中的〈mplemen^ 段显示了功能实现的描述方法flmcID表示实现功能的唯一标识,id表 示功能实现自己的标识,name表示功能名称,procname表示功能对应的 处理函数名称。当这个实现被触发时,插件内核管理器^4居其插件id以 及函数名字找到对应的处理函数入口 。功能定义是对某一功能的形式定义,但不需实现,功能可以由任何 插件来实现,并且一个定义可以有多个实现。在文本的5-9行和10-14行 分别定义了两个功能定义fUncID是功能的唯一标识,name表示功能名 称,procname表示功能对应的处理函数名称。当插件系统冲全测到这个功 能定义之后会记录下procname的名字以及插件标识符ID,当需要真正处 理时,插件内核管理器根据插件id以及处理函数的名字找到对应的函数地址。如图1所示,本专利技术插件内核管理器包括插件管理器、功能定义管 理器、功能实现管理器、事件和消息管理器。其中插件管理器用于注册 插件描述文件中基本信息本文档来自技高网...

【技术保护点】
一种节省内存开销的插件加载方法,其特征在于,包括步骤: A1、建立并存储与插件对应的插件描述文件; A2、运行插件内核管理器,将所述插件描述文件存储的调用插件所需信息在所述插件内核管理器内进行注册; A3、调用插件时,根据 所述插件在所述插件内核管理器内的注册信息加载相关插件。

【技术特征摘要】

【专利技术属性】
技术研发人员:项波张代军
申请(专利权)人:深圳市汇海科技开发有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1