数组处理方法、装置、电子设备及存储介质与流程

文档序号:17641466发布日期:2019-05-11 00:42阅读:212来源:国知局
数组处理方法、装置、电子设备及存储介质与流程

本发明涉及计算机领域,具体涉及一种数组处理方法、装置、电子设备及存储介质。



背景技术:

当前安卓(android)开发中经常用到稀疏数组(sparsearray)的数据类型,用于存储键--值对(key-value)的情况,其中,key存储在一个整型int数组里,value存储在一个object数组里。且value值都是以强引用的方式存储在一个object数组里,增加了潜在的内存泄漏风险。



技术实现要素:

本发明实施例提供一种数组处理方法、装置、电子设备及存储介质,用于解决稀疏数组的值以强引用的方式进行存储,易造成内存泄漏的问题。

本发明实施例第一方面提供一种数组处理方法,包括:

若启动目标应用的目标用户界面组件,则将所述目标用户界面组件对应的目标数据单元添加至所述目标应用的第一稀疏数组中;

若结束所述目标用户界面组件,则执行垃圾回收操作;

若所述第一稀疏数组包括所述目标数据单元,则将所述第一稀疏数组进行弱引用处理,得到第二稀疏数组。

结合本发明实施例第一方面,在本发明实施例第一方面的第一种可能的实现方式中,所述第一稀疏数组包括多个第一数据单元,所述将所述第一稀疏数组进行弱引用处理,得到第二稀疏数组,包括:

新建参考稀疏数组;

将所述多个第一数据单元中每一第一数据单元对应的数据进行弱引用处理,得到多个第二数据单元,每一第二数据单元对应一个第一数据单元的数组序号;

根据所述多个第二数据单元中每一第二数据单元的数组序号,依次将所述多个第二数据单元添加至所述参考稀疏数组,得到所述第二稀疏数组。

结合本发明实施例第一方面或第一方面的第一种可能的实现方式,在本发明实施例第一方面的第二种可能的实现方式中,在所述将所述第一稀疏数组进行弱引用处理,得到第二稀疏数组之后,所述方法还包括:

重写所述第二稀疏数组对应的调用方法。

结合本发明实施例第一方面的第二种可能的实现方式,在本发明实施例第一方面的第三种可能的实现方式中,若所述调用方法包括删除第三数据单元,则所述重写所述第二稀疏数组对应的调用方法,包括:

获取输入的目标数组序号;

若所述目标数组序号对应所述第三数据单元,则根据所述目标数组序号删除所述第三数据单元。

结合本发明实施例第一方面的第二种可能的实现方式,在本发明实施例第一方面的第四种可能的实现方式中,若所述调用方法包括修改第三数据单元的数据,则所述重写所述第二稀疏数组对应的调用方法,包括:

获取输入的目标数组序号和修改数据;

若所述目标数组序号对应所述第三数据单元,则将所述修改数据进行弱引用处理,得到目标修改数据;

根据所述目标数据序号,将所述第三数据单元的数据修改为所述目标修改数据。

结合本发明实施例第一方面的第二种可能的实现方式,在本发明实施例第一方面的第五种可能的实现方式中,若所述调用方法包括查找第三数据单元,则所述重写所述第二稀疏数组对应的调用方法,包括:

获取输入的查找条件;

若确定所述查找条件对应所述第三数据单元,则去除所述第三数据单元对应的数据的弱引用,得到目标数据;

输出所述目标数据。

结合本发明实施例第一方面的第二种可能的实现方式,在本发明实施例第一方面的第六种可能的实现方式中,若所述调用方法包括计算所述第二稀疏数组的大小,则所述重写所述第二稀疏数组对应的调用方法,包括:

获取所述第二稀疏数组中每一数据单元对应的数据不为空的单元数量;

确定所述单元数量为所述第二稀疏数组的大小。

本发明实施例第二方面提供一种数组处理装置,包括:

添加单元,用于若启动目标应用的目标用户界面组件,则将所述目标用户界面组件对应的目标数据单元添加至所述目标应用的第一稀疏数组中;

清理单元,用于若结束所述目标用户界面组件,则执行垃圾回收操作;

弱引用单元,用于若所述第一稀疏数组包括所述目标数据单元,则将所述第一稀疏数组进行弱引用处理,得到第二稀疏数组。

结合本发明实施例第二方面,在本发明实施例第二方面的第一种可能的实现方式中,所述第一稀疏数组包括多个第一数据单元,所述弱引用单元具体用于新建参考稀疏数组;将所述多个第一数据单元中每一第一数据单元对应的数据进行弱引用处理,得到多个第二数据单元,每一第二数据单元对应一个第一数据单元的数组序号;根据所述多个第二数据单元中每一第二数据单元的数组序号,依次将所述多个第二数据单元添加至所述参考稀疏数组,得到所述第二稀疏数组。

结合本发明实施例第二方面或第二方面的第一种可能的实现方式,在本发明实施例第二方面的第二种可能的实现方式中,所述装置还包括:

重写单元,用于重写所述第二稀疏数组对应的调用方法。

结合本发明实施例第二方面的第二种可能的实现方式,在本发明实施例第二方面的第三种可能的实现方式中,若所述调用方法包括删除第三数据单元,则所述重写单元具体用于获取输入的目标数组序号;若所述目标数组序号对应所述第三数据单元,则根据所述目标数组序号删除所述第三数据单元。

结合本发明实施例第二方面的第二种可能的实现方式,在本发明实施例第二方面的第四种可能的实现方式中,若所述调用方法包括修改第三数据单元的数据,则所述重写单元具体用于获取输入的目标数组序号和修改数据;若所述目标数组序号对应所述第三数据单元,则将所述修改数据进行弱引用处理,得到目标修改数据;根据所述目标数据序号,将所述第三数据单元的数据修改为所述目标修改数据。

结合本发明实施例第二方面的第二种可能的实现方式,在本发明实施例第二方面的第五种可能的实现方式中,若所述调用方法包括查找第三数据单元的数据,则所述重写单元具体用于获取输入的查找条件;若确定所述查找条件对应所述第三数据单元,则去除所述第三数据单元对应的数据的弱引用,得到目标数据;输出所述目标数据。

结合本发明实施例第二方面的第二种可能的实现方式,在本发明实施例第二方面的第六种可能的实现方式中,若所述调用方法包括计算所述第二稀疏数组的大小,则所述重写单元具体用于获取所述第二稀疏数组中每一数据单元对应的数据不为空的单元数量;确定所述单元数量为所述第二稀疏数组的大小。

本发明实施例第三方面提供一种电子设备,包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行本发明实施例第一方面提供的数组处理方法。

本发明实施例第四方面提供了一种非临时性计算机可读存储介质,其中,该存储介质用于存储计算机程序,所述计算机程序被处理器执行时实现本发明实施例第一方面提供的数组处理方法。

本发明实施例中,若启动目标应用的目标用户界面组件,则将所述目标用户界面组件对应的目标数据单元添加至所述目标应用的第一稀疏数组中。若结束所述目标用户界面组件,则执行垃圾回收操作,若所述第一稀疏数组包括所述目标数据单元,则说明该目标数据单元是以强引用的方式进行存储的,如此,将所述第一稀疏数组进行弱引用处理以得到第二稀疏数组,则该第二稀疏数组包括数据单元均修改为弱引用对象,从而可避免内存泄露。

附图说明

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

图1是本发明实施例提供的一种数组处理方法的流程示意图;

图2是本发明实施例提供的另一种数组处理方法的流程示意图;

图3是本发明实施例提供的一种数组处理装置的结构示意图;

图4是本发明实施例提供的另一种数组处理装置的结构示意图;

图5是本发明实施例提供的一种电子设备的结构图。

具体实施方式

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

本发明的说明书和权利要求书及附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

本发明实施例所描述的电子设备可以包括智能手机(如android手机)、平板电脑、掌上电脑、笔记本电脑、移动互联网设备(mid,mobileinternetdevices)或穿戴式设备等,电子设备仅是举例,而非穷举,包含但不限于电子设备。

本发明实施例提供一种数组处理方法、装置、电子设备及存储介质,用于解决稀疏数组的值以强引用的方式进行存储,易造成内存泄漏的问题。

其中,sparsearray是一种android提供的key-value型数据组织方式,它的key存储在一个int数组里,value存储在一个object数组里。

强引用指的是一个对象在程序某个地方被用到了,该对象内存就不会被系统自动回收,其代码为:

objectobj=newobject();//可直接通过obj取得对应的对象,如obj.equels(newobject());

而这样obj对象对后面newobject的一个强引用,只有当obj这个引用被释放之后,对象才会被释放掉,因此,强引用的对象有可能造成内存泄漏。

与强引用相对应的弱引用是指一个对象在程序某个地方被用到了,系统在需要时会回收该对象的内存。其代码为:

objectobj=newobject();

weakreference<object>wf=newweakreference<object>(obj);

在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。因此,弱引用的对象难以造成内存泄漏。

请参阅图1,图1是本发明实施例提供的一种数组处理方法的流程图。如图1所示,该方法可以包括以下步骤。

步骤s101、若启动目标应用的目标用户界面组件,则将所述目标用户界面组件对应的目标数据单元添加至所述目标应用的第一稀疏数组中。

用户界面组件(activity)是android系统的用户界面组件,主要用于显示交互界面。在android中,通过一种activity栈的方式来管理activity的,一个activity的实例的状态决定它在栈中的位置。处于前台的activity总是在栈的顶端,当前台的activity因为异常或其它原因被销毁时,处于栈第二层的activity将被激活,上浮到栈顶。当新的activity启动入栈时,原activity会被压入到栈的第二层。一个activity在栈中的位置变化反映了它在不同状态间的转换。

在android中,activity拥有活动状态或者运行状态(activeorrunning)、暂停状态(paused)、停止状态(stopped)及销毁状态(killed)。其中:当一个新activity启动入栈后,它显示在屏幕最前端,处理是处于栈的最顶端(activity栈顶),此时处于可见并可和用户交互的激活状态,叫做活动状态或者运行状态;当activity失去焦点,被一个新的非全屏的activity或者一个透明的activity被放置在栈顶,此时的状态叫做暂停状态;当一个activity被另外的activity完全覆盖掉,叫做停止状态;当一个activity是暂停状态或者停止状态,系统可以将该activity从内存中删除,叫做销毁状态。

在本申请中,目标应用可以是电子设备中的任一应用;目标用户界面组件为该目标应用对应的任一activity,也可以是专门用于测试而编译的activity,在此不做限定。

可以理解,若启动目标activity,则该目标activity处于活动状态或者运行状态,若结束目标activity,则目标activity处于暂停状态或者停止状态,即电子设备可将该目标activity从内存中删除。

在本申请中,第一稀疏数组为目标应用中存储的任一稀疏数组,目标数据单元为电子设备为目标activity建立的稀疏单元,即该目标数据单元也包括对应的key和value。

步骤s102、若结束所述目标用户界面组件,则执行垃圾回收操作。

其中,执行垃圾回收(garbagecollection,gc)操作用于清理内存中的弱引用对象,可以理解,若第一稀疏数组包括目标数据单元,则说明该第一稀疏数组中的数据单元是以强引用的方式进行存储的,否则,可说明该第一稀疏数组中的数据单元是以弱引用的方式进行存储的。

步骤s103、若所述第一稀疏数组包括所述目标数据单元,则将所述第一稀疏数组进行弱引用处理,得到第二稀疏数组。

本申请对于如何进行弱引用处理不做限定,作为一种可选的实施方式,所述第一稀疏数组包括多个第一数据单元,所述将所述第一稀疏数组进行弱引用处理,得到第二稀疏数组,包括:新建参考稀疏数组;将所述多个第一数据单元中每一第一数据单元对应的数据进行弱引用处理,得到多个第二数据单元;根据所述多个第二数据单元中每一第二数据单元的数组序号,依次将所述多个第二数据单元添加至所述参考稀疏数组,得到所述第二稀疏数组。

其中,参考稀疏数组用于暂时存储第二数据单元,每一第二数据单元对应一个第一数据单元的数组序号,则第二稀疏数组仅将第一稀疏数组中对应数组序号的数组单元进行弱引用处理。

举例来说,假设多个第一数据单元为数据单元a、数据单元b和数据单元c,其中数据单元a的数组序号为0、数据单元b的数组序号为1、数据单元c的数组序号为2,则先将数据单元a进行弱引用处理得到数据单元d、数据单元b进行弱引用处理得到数据单元e、数据单元c进行弱引用处理得到数据单元f,即多个第二数据单元为数据单元d、数据单元e和数据单元f,且数据单元d、数据单元e和数据单元f分别对应的数组序号为0、1、2,因此,依次将数据单元d、数据单元e和数据单元f添加至参考稀疏数组以得到第二稀疏数组。

可以理解,分别将第一数据单元对应的数据进行弱引用处理以得到第二数据单元,然后按照各个第二数据单元对应的数据序号,依次添加至参考稀疏数据,并在添加完成时,得到第二稀疏数组,以使第二稀疏数组中对应第二数据单元均为弱引用对象,以避免内存泄露。

此外,上述弱引用方法与安卓的系统版本无关,因此,可提高数组处理方法的灵活性。

在图1所描述的数组处理方法中,若启动目标应用的目标用户界面组件,则将所述目标用户界面组件对应的目标数据单元添加至所述目标应用的第一稀疏数组中。若结束所述目标用户界面组件,则执行垃圾回收操作,若所述第一稀疏数组包括所述目标数据单元,则说明该目标数据单元是以强引用的方式进行存储的,如此,将所述第一稀疏数组进行弱引用处理以得到第二稀疏数组,则该第二稀疏数组包括数据单元均修改为弱引用对象,从而可避免内存泄露。

请参阅图2,图2是本发明实施例提供的另一种数组处理方法的流程图。如图2所示,该方法可以包括以下步骤。

步骤s201、若启动目标应用的目标用户界面组件,则将所述目标用户界面组件对应的目标数据单元添加至所述目标应用的第一稀疏数组中。

步骤s202、若结束所述目标用户界面组件,则执行垃圾回收操作。

步骤s203、若所述第一稀疏数组包括所述目标数据单元,则将所述第一稀疏数组进行弱引用处理,得到第二稀疏数组。

其中,步骤s201-s203可参照1所示的数组处理方法中步骤s101-s103,在此不再赘述。

步骤s204、重写所述第二稀疏数组对应的调用方法。

在本申请中,第二稀疏数组对应的调用方法可包括计算大小size、增加键值对(append、put)、修改键值对(put、setvalueat)、删除键值对(delete、remove、removeat或者clear,其中,delete、remove、removeat用于删除键,clear用于删除全部)、查找(indexofkey,indexofvalue,keyat,valueat等,其中,indexofkey用于查看键所在位置;indexofvalue用于查看值所在位置,没有的话返回-1;keyat用于查看第几个位置的键;valueat用于查看第几个位置的值)、可克隆(cloneable)接口等,在此不做限定。

在一个可能的实施例中,若所述调用方法包括删除第三数据单元,则所述重写所述第二稀疏数组对应的调用方法,包括:获取输入的目标数组序号;若所述目标数组序号对应所述第三数据单元,则根据所述目标数组序号删除所述第三数据单元。

其中,删除第三数据单元的数据的调用方法可通过前述的delete、remove、removeat实现。可以理解,若获取的目标数据序号对应所述第三数据单元,则删除该目标数组序号对应的第三数据单元,则无论第三数据单元是以强引用方式还是弱引用方式,删除之后,均不会造成内存泄露。

在一个可能的实施例中,若所述调用方法包括修改第三数据单元的数据,则所述重写所述第二稀疏数组对应的调用方法,包括:获取输入的目标数组序号和修改数据;若所述目标数组序号对应所述第三数据单元,则将所述修改数据进行弱引用处理,得到目标修改数据;根据所述目标数据序号,将所述第三数据单元的数据修改为所述目标修改数据。

其中,修改第三数据单元的数据的调用方法可通过前述的put、setvalueat实现,需要说明的是,若键不存在,put就会变为添加新键值对。

可以理解,若获取的目标数据序号对应所述第三数据单元,则将修改数据进行弱引用处理以得到目标修改数据,根据该目标数组序号将所述第三数据单元的数据修改为所述目标修改数据,也就是说,修改之后的第三数据单元的数据以弱引用方式进行存储,从而不会造成内存泄露。

在一个可能的实施例中,若所述调用方法包括查找第三数据单元的数据,则所述重写所述第二稀疏数组对应的调用方法,包括:获取输入的查找条件;若确定所述查找条件对应第三数据单元,则去除所述第三数据单元对应的数据的弱引用,得到目标数据;输出所述目标数据。

其中,查找第三数据单元的数据的调用方法可通过前述的valueat实现。可以理解,若获取的查找条件对应第三数据单元,则去除该第三数据单元对应的数据的弱引用以得到目标数据,然后输出目标数据,如此,将第三数据单元对应的数据进行去除弱引用,即返回数值本身。

在一个可能的实施例中,若所述调用方法包括计算所述第二稀疏数组的大小,则所述重写所述第二稀疏数组对应的调用方法,包括:获取所述第二稀疏数组中每一数据单元对应的数据不为空的单元数量;确定所述单元数量为所述第二稀疏数组的大小。

其中,计算第二稀疏数组的大小的调用方法可通过前述的size实现。可以理解,若第二稀疏数组中的数据为空,则表示该数据已不再被引用,从而获取数据不为空的单元数量,并将该单元数量作为第二稀疏数组中的大小,如此,便于提高计算大小的准确性。

在一个可能的实施例中,若所述调用方法包括添加第五数据单元,则所述重写所述第二稀疏数组对应的调用方法,包括:

获取输入的添加数据;

将所述添加数据进行弱引用处理,得到目标添加数据;

在所述第二稀疏数组的末端添加与所述目标添加数据,得到所述第五数据单元。

可以理解,先将添加数据进行弱引用处理以得到目标添加数据,再将目标添加数据添加在第二稀疏数组的末端,以此添加第五数据单元。

在图2所描述的数组处理方法中,若启动目标应用的目标用户界面组件,则将所述目标用户界面组件对应的目标数据单元添加至所述目标应用的第一稀疏数组中。若结束所述目标用户界面组件,则执行垃圾回收操作,若所述第一稀疏数组包括所述目标数据单元,则说明该目标数据单元是以强引用的方式进行存储的,如此,将所述第一稀疏数组进行弱引用处理以得到第二稀疏数组,则该第二稀疏数组包括数据单元均修改为弱引用对象,从而可避免内存泄露。最后,对第二稀疏数组的调用方法进行重写,可提高调用第二稀疏数组的方法的准确性。

请参阅图3,图3是本发明实施例提供的一种数组处理装置的结构图。如图3所示,该装置300可以包括:

添加单元301,用于若启动目标应用的目标用户界面组件,则将所述目标用户界面组件对应的目标数据单元添加至所述目标应用的第一稀疏数组中;

清理单元302,用于若结束所述目标用户界面组件,则执行垃圾回收操作;

弱引用单元303,用于若所述第一稀疏数组包括所述目标数据单元,则将所述第一稀疏数组进行弱引用处理,得到第二稀疏数组。

可理解的是,本实施例的数组处理装置300的各功能单元的功能可根据上述图1方法实施例的方法具体实现,此处不再赘述。

作为一种可选实施例,所述第一稀疏数组包括多个第一数据单元,在所述将所述第一稀疏数组进行弱引用处理,得到第二稀疏数组方面,所述弱引用单元303具体用于新建参考稀疏数组;将所述多个第一数据单元中每一第一数据单元对应的数据进行弱引用处理,得到多个第二数据单元,每一第二数据单元对应一个第一数据单元的数组序号;根据所述多个第二数据单元中每一第二数据单元的数组序号,依次将所述多个第二数据单元添加至所述参考稀疏数组,得到所述第二稀疏数组。

在图3所描述的数组处理装置中,若启动目标应用的目标用户界面组件,则将所述目标用户界面组件对应的目标数据单元添加至所述目标应用的第一稀疏数组中。若结束所述目标用户界面组件,则执行垃圾回收操作,若所述第一稀疏数组包括所述目标数据单元,则说明该目标数据单元是以强引用的方式进行存储的,如此,将所述第一稀疏数组进行弱引用处理以得到第二稀疏数组,则该第二稀疏数组包括数据单元均修改为弱引用对象,从而可避免内存泄露。

请参阅图4,图4是本发明实施例提供的另一种数组处理装置的结构图。如图4所示,该装置400可以包括:

添加单元401,用于若启动目标应用的目标用户界面组件,则将所述目标用户界面组件对应的目标数据单元添加至所述目标应用的第一稀疏数组中;

清理单元402,用于若结束所述目标用户界面组件,则执行垃圾回收操作;

弱引用单元403,用于若所述第一稀疏数组包括所述目标数据单元,则将所述第一稀疏数组进行弱引用处理,得到第二稀疏数组;

重写单元404,用于重写所述第二稀疏数组对应的调用方法。

作为一种可选实施例,所述第一稀疏数组包括多个第一数据单元,所述弱引用单元403具体用于新建参考稀疏数组;将所述多个第一数据单元中每一第一数据单元对应的数据进行弱引用处理,得到多个第二数据单元,每一第二数据单元对应一个第一数据单元的数组序号;根据所述多个第二数据单元中每一第二数据单元的数组序号,依次将所述多个第二数据单元添加至所述参考稀疏数组,得到所述第二稀疏数组。

作为一种可选实施例,若所述调用方法包括删除第三数据单元,则所述重写单元404具体用于获取输入的目标数组序号;若所述目标数组序号对应所述第三数据单元,则根据所述目标数组序号删除所述第三数据单元。

作为一种可选实施例,若所述调用方法包括修改第三数据单元的数据,则所述重写单元404具体用于获取输入的目标数组序号和修改数据;若所述目标数组序号对应所述第三数据单元,则将所述修改数据进行弱引用处理,得到目标修改数据;根据所述目标数据序号,将所述第三数据单元的数据修改为所述目标修改数据。

作为一种可选实施例,若所述调用方法包括查找第三数据单元的数据,则所述重写单元404具体用于获取输入的查找条件;若确定所述查找条件对应所述第三数据单元,则去除所述第三数据单元对应的数据的弱引用,得到目标数据;输出所述目标数据。

作为一种可选实施例,若所述调用方法包括计算所述第二稀疏数组的大小,则所述重写单元404具体用于获取所述第二稀疏数组中每一数据单元对应的数据不为空的单元数量;确定所述单元数量为所述第二稀疏数组的大小。

可理解的是,本实施例的数组处理装置400的各功能单元的功能可根据上述图1和图2方法实施例的方法具体实现,此处不再赘述。

在图4所描述的数组处理装置中,若启动目标应用的目标用户界面组件,则将所述目标用户界面组件对应的目标数据单元添加至所述目标应用的第一稀疏数组中。若结束所述目标用户界面组件,则执行垃圾回收操作,若所述第一稀疏数组包括所述目标数据单元,则说明该目标数据单元是以强引用的方式进行存储的,如此,将所述第一稀疏数组进行弱引用处理以得到第二稀疏数组,则该第二稀疏数组包括数据单元均修改为弱引用对象,从而可避免内存泄露。最后,对第二稀疏数组的调用方法进行重写,可提高调用第二稀疏数组的方法的准确性。

请参阅图5,图5是本发明实施例提供的电子设备。其中,该数组处理方法适用于手机、平板电脑等电子设备。如图5所示,该电子设备可以包括壳体510、处理器520、存储器530、电路板540和电源电路550,其中,电路板540安置在壳体围成的空间内部,处理器520和存储器530设置在电路板540上;电源电路550,用于为电子设备的各个电路或器件供电;存储器530用于存储可执行程序代码;处理器520通过读取存储器530中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行以下步骤:

若启动目标应用的目标用户界面组件,则将所述目标用户界面组件对应的目标数据单元添加至所述目标应用的第一稀疏数组中;

若结束所述目标用户界面组件,则执行垃圾回收操作;

若所述第一稀疏数组包括所述目标数据单元,则将所述第一稀疏数组进行弱引用处理,得到第二稀疏数组。

作为一种可选实施例,所述第一稀疏数组包括多个第一数据单元,在所述将所述第一稀疏数组进行弱引用处理,得到第二稀疏数组方面,上述处理器520具体用于执行以下操作:

新建参考稀疏数组;

将所述多个第一数据单元中每一第一数据单元对应的数据进行弱引用处理,得到多个第二数据单元,每一第二数据单元对应一个第一数据单元的数组序号;

根据所述多个第二数据单元中每一第二数据单元的数组序号,依次将所述多个第二数据单元添加至所述参考稀疏数组,得到所述第二稀疏数组。

作为一种可选实施例,在所述将所述第一稀疏数组进行弱引用处理,得到第二稀疏数组之后,上述处理器520还用于执行以下操作:

重写所述第二稀疏数组对应的调用方法。

作为一种可选实施例,若所述调用方法包括删除第三数据单元,则在所述重写所述第二稀疏数组对应的调用方法方面,上述处理器520具体用于执行以下操作:

获取输入的目标数组序号;

若所述目标数组序号对应所述第三数据单元,则根据所述目标数组序号删除所述第三数据单元。

作为一种可选实施例,若所述调用方法包括修改第三数据单元的数据,则在所述重写所述第二稀疏数组对应的调用方法方面,上述处理器520具体用于执行以下操作:

获取输入的目标数组序号和修改数据;

若所述目标数组序号对应所述第三数据单元,则将所述修改数据进行弱引用处理,得到目标修改数据;

根据所述目标数据序号,将所述第三数据单元的数据修改为所述目标修改数据。

作为一种可选实施例,若所述调用方法包括查找第三数据单元的数据,则在所述重写所述第二稀疏数组对应的调用方法方面,上述处理器520具体用于执行以下操作:

获取输入的查找条件;

若确定所述查找条件对应所述第三数据单元,则去除所述第三数据单元对应的数据的弱引用,得到目标数据;

输出所述目标数据。

作为一种可选实施例,若所述调用方法包括计算所述第二稀疏数组的大小,则在所述重写所述第二稀疏数组对应的调用方法方面,上述处理器520具体用于执行以下操作:

获取所述第二稀疏数组中每一数据单元对应的数据不为空的单元数量;

确定所述单元数量为所述第二稀疏数组的大小。

在图5所描述的电子设备中,若启动目标应用的目标用户界面组件,则将所述目标用户界面组件对应的目标数据单元添加至所述目标应用的第一稀疏数组中。若结束所述目标用户界面组件,则执行垃圾回收操作,若所述第一稀疏数组包括所述目标数据单元,则说明该目标数据单元是以强引用的方式进行存储的,如此,将所述第一稀疏数组进行弱引用处理以得到第二稀疏数组,则该第二稀疏数组包括数据单元均修改为弱引用对象,从而可避免内存泄露。

在一个实施例中提供了一种非临时性计算机可读存储介质,其上存储有计算机程序,其中,该计算机程序被处理器执行时实现实施例一或实施例二的数组处理方法。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

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