本发明涉及内存管理技术领域,特别是涉及一种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对象;
对象阈值确定单元,用于确定所述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专用内存中确定用于存储所述javascript对象的设置有非独占标记的第一目标堆内存方法流程图;
图4为本申请实施例提供的另一种从javascript专用内存中确定用于存储所述javascript对象的设置有非独占标记的第一目标堆内存方法流程图;
图5为本申请实施例提供的一种javascript对象存储装置的结构示意图;
图6为本申请实施例提供的一种javascript对象回收方法流程图;
图7为本申请实施例提供的一种javascript对象回收装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
实施例:
图1为本申请实施例提供的一种javascript对象存储方法流程图。
如图1所示,该方法包括:
s101、确定javascript引擎在处理javascript脚本的过程中产生的javascript对象;
s102、确定所述javascript对象的大小是否到达预设的对象阈值;若确定所述javascript对象的大小到达预设的对象阈值,执行步骤s103;
s103、从通用内存中为javascript专用内存分配一个仅用于存储所述javascript对象的堆内存,所述堆内存设置有独占标记;
可选的,从通用内存中为javascript专用内存分配一个仅用于存储所述javascript对象的堆内存的大小,满足所述javascript对象的存储需求。
s104、将所述javascript对象存储至所述javascript专用内存中的所述堆内存中。
图2为本申请实施例提供的另一种javascript对象存储方法流程图。
如图2所示,该方法包括:
s201、确定javascript引擎在处理javascript脚本的过程中产生的javascript对象;
s202、确定所述javascript对象的大小是否到达预设的对象阈值;若确定所述javascript对象的大小到达预设的对象阈值,执行步骤s203;若确定所述javascript对象的大小未到达预设的对象阈值,执行步骤s205;
s203、从通用内存中为javascript专用内存分配一个仅用于存储所述javascript对象的堆内存,所述堆内存设置有独占标记;
s204、将所述javascript对象存储至所述javascript专用内存中的所述堆内存中;
本申请实施例提供的步骤s201-s204的执行过程与上述实施例提供的步骤s101-s104的执行过程相同,有关步骤s201-s204的执行过程请参照上述对步骤s101-s104的描述,在此不做赘述。
s205、从javascript专用内存中确定用于存储所述javascript对象的设置有非独占标记的第一目标堆内存,所述第一目标堆内存的剩余空间大于所述javascript对象;
s206、将所述javascript对象存储至所述第一目标堆内存。
图3为本申请实施例提供的一种从javascript专用内存中确定用于存储所述javascript对象的设置有非独占标记的第一目标堆内存方法流程图。
如图3所示,该方法包括:
s301、确定javascript专用内存中是否存在剩余空间不小于所述javascript对象的大小的设置有非独占标记的堆内存;若确定javascript专用内存中存在剩余空间不小于所述javascript对象的大小的设置有非独占标记的堆内存,执行步骤s302;若确定javascript专用内存中不存在剩余空间不小于所述javascript对象的大小的设置有非独占标记的堆内存,执行步骤s303;
s302、从所述javascript专用内存中确定第一目标堆内存,所述第一目标堆内存的剩余空间不小于所述javascript对象的大小;
s303、比较所述javascript对象的大小与预设的堆内存的大小;当所述javascript对象的大小不大于预设的堆内存的大小时,执行步骤s304;当所述javascript对象的大小大于预设的堆内存的大小时,执行步骤s305;
s304、从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小与所述预设的堆内存的大小相同,所分配的堆内存设置有非独占标记;
s305、从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小满足所述javascript对象的存储需求,所分配的堆内存设置有非独占标记。
图4为本申请实施例提供的另一种从javascript专用内存中确定用于存储所述javascript对象的设置有非独占标记的第一目标堆内存方法流程图。
如图4所示,该方法包括:
s401、确定javascript专用内存中是否存在设置有非独占标记的堆内存;若确定javascript专用内存中存在设置有非独占标记的堆内存,执行步骤s402、若确定javascript专用内存中不存在设置有非独占标记的堆内存,执行步骤s404;
s402、确定javascript专用内存中是否存在剩余空间不小于所述javascript对象的大小的设置有非独占标记的堆内存;若确定javascript专用内存中存在剩余空间不小于所述javascript对象的大小的设置有非独占标记的堆内存,执行步骤s403;若确定javascript专用内存中不存在剩余空间不小于所述javascript对象的大小的设置有非独占标记的堆内存,执行步骤s404、
s403、从所述javascript专用内存中确定第一目标堆内存,所述第一目标堆内存的剩余空间不小于所述javascript对象的大小;
s404、比较所述javascript对象的大小与预设的堆内存的大小;当所述javascript对象的大小不大于预设的堆内存的大小时,执行步骤s405;当所述javascript对象的大小大于预设的堆内存的大小时,执行步骤s406;
s405、从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小与所述预设的堆内存的大小相同,所分配的堆内存设置有非独占标记;
s406、从通用内存中为所述javascript专用内存分配一个堆内存,所分配的堆内存的大小满足所述javascript对象的存储需求,所分配的堆内存设置有非独占标记。
在本申请实施例中,优选的,javascript对象携带回收标识,所述回收标识指示javascript对象可被回收/不可被回收。
在本申请实施例中,优选的,所述对象阈值的大小不大于所述预设的堆内存的大小。
以上仅仅是本申请实施例的优选方式,发明人可根据自己的需求人员设置对象阈值的大小,以及预设的堆内存的大小,在此不做限定。
本申请实施例提供一种javascript对象存储方法,通过确定javascript对象的大小是否到达预设的对象阈值;若是,从通用内存中为javascript专用内存分配一个堆内存,所述堆内存设置有独占标记;将所述javascript对象存储至所述堆内存中的方式,保证了大小到达预设的对象阈值的javascript对象在一堆内存中的单独存储,使得在进行javascript对象回收时,所述javascript对象占用的堆内存的回收与其他javascript对象占用的堆内存的回收之间互不影响,进而实现了节省通用内存,提高数字电视中间件的运行效率的目的。
图5为本申请实施例提供的一种javascript对象存储装置的结构示意图。
如图5所示,该装置包括:
javascript对象确定单元51,用于确定javascript引擎在处理javascript脚本的过程中产生的javascript对象;
对象阈值确定单元52,用于确定所述javascript对象的大小是否到达预设的对象阈值;
堆内存分配单元53,用于若确定所述javascript对象的大小到达预设的对象阈值,从通用内存中为javascript专用内存分配一个堆内存,所述堆内存设置有独占标记;
存储单元54,用于将所述javascript对象存储至所述javascript专用内存中的所述堆内存中。
在本申请实施例中,优选的,所述对象阈值的大小不大于所述预设的堆内存的大小。
本申请实施例提供一种javascript对象存储装置,通过确定javascript对象的大小是否到达预设的对象阈值;若是,从通用内存中为javascript专用内存分配一个堆内存,所述堆内存设置有独占标记;将所述javascript对象存储至所述堆内存中的方式,保证了大小到达预设的对象阈值的javascript对象在一堆内存中的单独存储,使得在进行javascript对象回收时,所述javascript对象占用的堆内存的回收与其他javascript对象占用的堆内存的回收之间互不影响,进而实现了节省通用内存,提高数字电视中间件的运行效率的目的。
图6为本申请实施例提供的一种javascript对象回收方法流程图。
如图6所示,该方法包括:
s601、在满足javascript对象回收条件的情况下,从javascript专用内存中确定第二目标堆内存,所述第二目标堆内存中的每个javascript对象携带的回收标识均指示javascript对象可被回收;
可选的,可选的,满足javascript对象回收条件,包括:接收到javascript对象回收请求。
所述在满足javascript对象回收条件的情况下,从javascript专用内存中确定第二目标堆内存,包括:响应接收到的javascript对象回收请求,从所述javascript对象回收请求指示的javascript专用内存中确定第二目标堆内存。
s602、释放所述第二目标堆内存中的每个javascript对象。
本申请实施例提供一种javascript对象回收方法,通过提供针对所述javascript对象存储方法的javascript对象回收方法,实现了对javascript专用内存的回收。
图7为本申请实施例提供的一种javascript对象回收装置的结构示意图。
如图7所示,该装置包括:
第二目标堆内存确定单元71,用于在满足javascript对象回收条件的情况下,从javascript专用内存中确定第二目标堆内存,所述第二目标堆内存中的每个javascript对象携带的回收标识均指示javascript对象可被回收;
释放单元72,用于释放所述第二目标堆内存中的每个javascript对象。
本申请实施例提供一种javascript对象回收装置,通过提供针对所述javascript对象存储方法的javascript对象回收装置,实现了对javascript专用内存的回收。
本发明中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
以上仅是本发明的优选实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。