一种JavaScript对象存储、回收方法及装置与流程

文档序号:11250805 阅读:293 来源:国知局
一种JavaScript对象存储、回收方法及装置与流程

本发明涉及内存管理技术领域,特别是涉及一种javascript对象存储、回收方法及装置。



背景技术:

数字电视中间件是运行于机顶盒或数字电视上的一种软件,数字电视中间件的主要功能包括web应用呈现、电视节目接收与解扰、本地节目播放等。万维网服务的客户端浏览程序(浏览器)可向万维网服务器发送各种请求,并对从服务器发来的超文本信息和各种多媒体数据格式进行解释、显示和播放,其是数字电视中间件的主要模块。

javascript一种直译式脚本语言(javascript中的每个事物都可看成是javascript对象),它的解释器被称为javascript引擎(javascript引擎是一个专门处理javascript脚本的虚拟机,一般会附带在浏览器之中),为浏览器的一部分,广泛用于客户端的脚本语言。现有技术通常是将javascript专用内存从数字电视中间件的通用内存中分出,以仅用于javascript引擎在运行过程中的内存分配,实现对javascript引擎在处理javascript脚本过程中产生的javascript对象的存储。

然而,经研究发现,在从通用内存中分配出较大的javascript专用内存以仅用于javascript引擎在运行过程中的内存分配的情况下,往往会使得通用内存剩余空间较小,进而导致数字电视中间件运行不顺畅的问题。



技术实现要素:

有鉴于此,本发明实施例提供一种javascript对象存储、回收方法及装置,以实现节省通用内存,提高数字电视中间件的运行效率的目的。

为了实现上述目的,本发明实施例提供的技术方案如下:

一种javascript对象存储方法,包括:

确定javascript引擎在处理javascript脚本的过程中产生的javascript对象;

将所述javascript对象存储至目标存储位置,并获取用于指示所述目标存储位置的地址信息,所述目标存储位置不同于javascript专用内存;

从所述javascript专用内存中确定用于存储所述地址信息的第一目标堆内存,所述第一目标堆内存的剩余空间大于所述地址信息的大小;

将所述地址信息存储至所述第一目标堆内存。

优选的,所述从所述javascript专用内存中确定用于存储所述地址信息的第一目标堆内存,包括:

确定所述javascript专用内存中是否存在剩余空间不小于所述地址信息的大小的堆内存;

若确定所述javascript专用内存中存在剩余空间不小于所述地址信息的大小的堆内存,从所述javascript专用内存中确定第一目标堆内存,所述第一目标堆内存的剩余空间不小于所述地址信息的大小;

若确定所述javascript专用内存中不存在剩余空间大于等于所述地址信息的大小的堆内存,比较所述地址信息的大小与预设的堆内存的大小;

当所述地址信息的大小不大于预设的堆内存的大小时,从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小与所述预设的堆内存的大小相同;

当所述地址信息的大小大于预设的堆内存的大小时,从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小满足所述地址信息的存储需求。

优选的,在确定所述javascript专用内存中是否存在剩余空间不小于所述地址信息的大小的堆内存之前,该方法还包括:

确定所述javascript专用内存中是否存在堆内存;

若确定所述javascript专用内存中不存在堆内存,比较所述地址信息的大小与预设的堆内存的大小;

当所述地址信息的大小不大于预设的堆内存的大小时,从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小与所述预设的堆内存的大小相同;

当所述地址信息的大小大于预设的堆内存的大小时,从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小满足所述地址信息的存储需求;

所述确定所述javascript专用内存中是否存在剩余空间不小于所述地址信息的大小的堆内存,包括:若确定所述javascript专用内存中存在堆内存,确定所述javascript专用内存中是否存在剩余空间不小于所述地址信息的大小的堆内存。

优选的,所述地址信息携带属性信息,所述属性信息用于指示所述地址信息指示的目标存储位置中存储的javascript对象可被回收/不可被回收。

优选的,所述目标存储位置位于所述通用内存中。

一种javascript对象存储装置,包括:

第一确定单元,用于确定javascript引擎在处理javascript脚本的过程中产生的javascript对象;

获取单元,用于将所述javascript对象存储至目标存储位置,并获取用于指示所述目标存储位置的地址信息,所述目标存储位置不同于javascript专用内存;

第二确定单元,用于从所述javascript专用内存中确定用于存储所述地址信息的第一目标堆内存,所述第一目标堆内存的剩余空间大于所述地址信息的大小;

存储单元,用于将所述地址信息存储至所述第一目标堆内存。

优选的,所述第二确定单元,包括:

第三确定单元,用于确定所述javascript专用内存中是否存在剩余空间不小于所述地址信息的大小的堆内存;

第四确定单元,用于若确定所述javascript专用内存中存在剩余空间不小于所述地址信息的大小的堆内存,从所述javascript专用内存中确定第一目标堆内存,所述第一目标堆内存的剩余空间不小于所述地址信息的大小;

比较单元,用于若确定所述javascript专用内存中不存在剩余空间大于等于所述地址信息的大小的堆内存,比较所述地址信息的大小与预设的堆内存的大小;

第一分配单元,用于当所述地址信息的大小不大于预设的堆内存的大小时,从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小与所述预设的堆内存的大小相同;

第二分配单元,用于当所述地址信息的大小大于预设的堆内存的大小时,从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小满足所述地址信息的存储需求。

一种基于所述的javascript对象存储方法的javascript对象回收方法,包括:

在满足javascript对象回收条件的情况下,从javascript专用内存中确定第二目标堆内存;

释放所述第二目标堆内存中的每个地址信息,以及所述地址信息指示的目标存储位置中存储的javascript对象。

优选的,所述第二目标堆内存中不存在目标地址信息,所述目标地址信息携带的属性信息指示所述目标地址信息指示的目标存储位置中存储的javascript对象不可被回收。

一种javascript对象回收装置,包括:

第五确定单元,用于在满足javascript对象回收条件的情况下,从javascript专用内存中确定第二目标堆内存;

释放单元,用于释放所述第二目标堆内存中的每个地址信息,以及所述地址信息指示的目标存储位置中存储的javascript对象。

本申请实施例提供一种javascript对象存储、回收方法及装置,通过将确定的javascript对象存储至目标存储位置(不同于javascript专用内存),获取用于指示目标存储位置的地址信息;从javascript专用内存中确定第一目标堆内存并存储地址信息的方式实现了对javascript对象的存储,降低了javascript引擎在运行过程中产生的javascript对象对javascript专用内存的占用,节省了通用内存、提高了数字电视中间件的运行效率。相应的,通过提供针对javascript对象存储方法的javascript对象回收方法,实现了对javascript专用内存的回收。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种javascript对象存储方法流程图;

图2为本申请实施例提供的一种从所述javascript专用内存中确定用于存储所述地址信息的第一目标堆内存的方法流程图;

图3为本申请实施例提供的另一种从所述javascript专用内存中确定用于存储所述地址信息的第一目标堆内存的方法流程图;

图4为本申请实施例提供的一种javascript对象存储装置的结构示意图;

图5为本申请实施例提供的一种javascript对象回收方法流程图;

图6为本申请实施例提供的一种javascript对象回收装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

实施例:

图1为本申请实施例提供的一种javascript对象存储方法流程图。

如图1所示,该方法包括:

s101、确定javascript引擎在处理javascript脚本的过程中产生的javascript对象;

s102、将所述javascript对象存储至目标存储位置,并获取用于指示所述目标存储位置的地址信息,所述目标存储位置不同于javascript专用内存;

可选的,所述目标存储位置为位于通用内存中,所述通用内存分出所述javascript专用内存,所述javascript专用内存仅用于所述javascript引擎在运行过程中的内存分配,实现对所述javascript引擎在处理javascript脚本的过程中产生的javascript对象的存储。

s103、从所述javascript专用内存中确定用于存储所述地址信息的第一目标堆内存,所述第一目标堆内存的剩余空间大于所述地址信息的大小;

s104、将所述地址信息存储至所述第一目标堆内存。

图2为本申请实施例提供的一种从所述javascript专用内存中确定用于存储所述地址信息的第一目标堆内存的方法流程图。

如图2所示,该方法包括:

s201、确定所述javascript专用内存中是否存在剩余空间不小于所述地址信息的大小的堆内存;若确定所述javascript专用内存中存在剩余空间不小于所述地址信息的大小的堆内存,执行步骤s202;若确定所述javascript专用内存中不存在剩余空间大于等于所述地址信息的大小的堆内存,执行步骤s203;

s202、从所述javascript专用内存中确定第一目标堆内存,所述第一目标堆内存的剩余空间不小于所述地址信息的大小;

s203、比较所述地址信息的大小与预设的堆内存的大小;当所述地址信息的大小不大于预设的堆内存的大小时,执行步骤s204;当所述地址信息的大小大于预设的堆内存的大小时,执行步骤s205;

s204、从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小与所述预设的堆内存的大小相同;

s205、从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小满足所述地址信息的存储需求。

可选的,所分配的堆内存的大小满足所述地址信息的存储需求,包括:所分配的堆内存的大小不小于所述地址信息的大小。

图3为本申请实施例提供的另一种从所述javascript专用内存中确定用于存储所述地址信息的第一目标堆内存的方法流程图。

如图3所示,该方法包括:

s301、确定所述javascript专用内存中是否存在堆内存;若确定所述javascript专用内存中不存在堆内存;执行步骤s304;若确定所述javascript专用内存中存在堆内存;执行步骤s302;

s302、确定所述javascript专用内存中是否存在剩余空间不小于所述地址信息的大小的堆内存;若确定所述javascript专用内存中存在剩余空间不小于所述地址信息的大小的堆内存,执行步骤s303;若确定所述javascript专用内存中不存在剩余空间大于等于所述地址信息的大小的堆内存,执行步骤s304;

s303、从所述javascript专用内存中确定第一目标堆内存,所述第一目标堆内存的剩余空间不小于所述地址信息的大小;

s304、比较所述地址信息的大小与预设的堆内存的大小;当所述地址信息的大小不大于预设的堆内存的大小时,执行步骤s305;当所述地址信息的大小大于预设的堆内存的大小时,执行步骤s306;

s305、从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小与所述预设的堆内存的大小相同;

s306、从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小满足所述地址信息的存储需求。

进一步的,本申请实施例中的地址信息中携带属性信息,所述属性信息用于指示所述地址信息指示的目标存储位置中存储的javascript对象可被回收/不可被回收。

例如,若确定javascript引擎在处理javascript脚本的过程中产生了两个javascript对象,javascript对象1和javascript对象2;与javascript对象1对应的地址信息携带的属性信息指示所述javascript对象1可被回收;与javascript对象2对应的地址信息携带的属性信息指示所述javascript对象2不可被回收。

本申请实施例提供一种javascript对象存储方法,通过将确定的javascript对象存储至目标存储位置(不同于javascript专用内存),获取用于指示目标存储位置的地址信息;从javascript专用内存中确定第一目标堆内存并存储地址信息的方式实现了对javascript对象的存储,降低了javascript引擎在运行过程中产生的javascript对象对javascript专用内存的占用,节省了通用内存、提高了数字电视中间件的运行效率。

图4为本申请实施例提供的一种javascript对象存储装置的结构示意图。

如图4所示,该装置包括:

第一确定单元41,用于确定javascript引擎在处理javascript脚本的过程中产生的javascript对象;

获取单元42,用于将所述javascript对象存储至目标存储位置,并获取用于指示所述目标存储位置的地址信息,所述目标存储位置不同于javascript专用内存;

第二确定单元43,用于从所述javascript专用内存中确定用于存储所述地址信息的第一目标堆内存,所述第一目标堆内存的剩余空间大于所述地址信息的大小;

存储单元44,用于将所述地址信息存储至所述第一目标堆内存。

可选的,所述第二确定单元,包括:

第三确定单元,用于确定所述javascript专用内存中是否存在剩余空间不小于所述地址信息的大小的堆内存;

第四确定单元,用于若确定所述javascript专用内存中存在剩余空间不小于所述地址信息的大小的堆内存,从所述javascript专用内存中确定第一目标堆内存,所述第一目标堆内存的剩余空间不小于所述地址信息的大小;

比较单元,用于若确定所述javascript专用内存中不存在剩余空间大于等于所述地址信息的大小的堆内存,比较所述地址信息的大小与预设的堆内存的大小;

第一分配单元,用于当所述地址信息的大小不大于预设的堆内存的大小时,从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小与所述预设的堆内存的大小相同;

第二分配单元,用于当所述地址信息的大小大于预设的堆内存的大小时,从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小满足所述地址信息的存储需求。

本申请实施例提供一种javascript对象存储装置,通过将确定的javascript对象存储至目标存储位置(不同于javascript专用内存),获取用于指示目标存储位置的地址信息;从javascript专用内存中确定第一目标堆内存并存储地址信息的方式实现了对javascript对象的存储,降低了javascript引擎在运行过程中产生的javascript对象对javascript专用内存的占用,节省了通用内存、提高了数字电视中间件的运行效率。

图5为本申请实施例提供的一种javascript对象回收方法流程图。

如图5所示,该方法包括:

s501、在满足javascript对象回收条件的情况下,从javascript专用内存中确定第二目标堆内存;

可选的,满足javascript对象回收条件,包括:接收到javascript对象回收请求。

所述在满足javascript对象回收条件的情况下,从javascript专用内存中确定第二目标堆内存,包括:响应接收到的javascript对象回收请求,从所述javascript对象回收请求指示的javascript专用内存中确定第二目标堆内存。

可选的,所述第二目标堆内存中不存在目标地址信息,所述目标地址信息携带的属性信息指示所述目标地址信息指示的目标存储位置中存储的javascript对象不可被回收。即,所述从javascript专用内存中确定第二目标堆内存,包括:从javascript专用内存中确定第二目标堆内存,所述第二目标堆内存中的每个地址信息携带的属性信息均指示javascript对象可被回收。

s502、释放所述第二目标堆内存中的每个地址信息,以及所述地址信息指示的目标存储位置中存储的javascript对象。

可选的,所述释放所述第二目标堆内存中的每个地址信息,以及所述地址信息指示的目标存储位置中存储的javascript对象,包括:释放所述第二目标堆内存中的每个地址信息,以及释放所述第二目标堆内存中的每个地址信息指示的目标存储位置中存储的javascript对象。

本申请实施例提供一种javascript对象回收方法,通过提供针对所述javascript对象存储方法的javascript对象回收方法,实现了对javascript专用内存的回收。

图6为本申请实施例提供的一种javascript对象回收装置的结构示意图。

如图6所示,该装置包括:

第五确定单元61,用于在满足javascript对象回收条件的情况下,从javascript专用内存中确定第二目标堆内存;

释放单元62,用于释放所述第二目标堆内存中的每个地址信息,以及所述地址信息指示的目标存储位置中存储的javascript对象。

本申请实施例提供一种javascript对象回收装置,通过提供针对所述javascript对象存储方法的javascript对象回收装置,实现了对javascript专用内存的回收。

本发明中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

以上仅是本发明的优选实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页 1 2
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1