一种数据清理方法、装置、计算机设备以及存储介质与流程

文档序号:30650520发布日期:2022-07-05 23:50阅读:105来源:国知局
一种数据清理方法、装置、计算机设备以及存储介质与流程

1.本公开涉及计算机技术领域,具体而言,涉及一种数据清理方法、装置、计算机设备以及存储介质。


背景技术:

2.用户在使用应用程序的过程中,由于内存泄漏等原因该应用程序在终端设备中占用的内存会越来越大,从而导致应用程序运行时帧率下降等问题,因此,现有的应用程序往往通过垃圾回收(garbage collection,简称gc)的方式来进行内存清理。
3.然而,现有的垃圾回收的方式往往为应用程序的运行造成了额外的开销,导致了应用程序运行过程中的运行效果变差,例如,在该应用程序为游戏的情况下,在某些逻辑运算较为复杂时,额外的垃圾回收会带来比较重度的cpu开销,从而导致游戏帧率下降。


技术实现要素:

4.本公开实施例至少提供一种数据清理方法、装置、计算机设备以及存储介质。
5.第一方面,本公开实施例提供了一种数据清理方法,包括:
6.确定目标应用中目标画面的逻辑渲染数据,启动内存清理线程,其中,所述内存清理线程用于清理所述目标应用的待清理内存数据;
7.基于所述逻辑渲染数据进行画面渲染,得到所述目标画面;
8.在基于所述逻辑渲染数据进行画面渲染的过程中,通过所述内存清理线程确定所述待清理内存数据是否满足清理要求;如是,通过所述内存清理线程清理所述待清理内存数据。
9.一种可选的实施方式中,所述确定目标应用中目标画面的逻辑渲染数据,启动内存清理线程,包括:
10.在所述目标应用的主线程通过逻辑运算得到所述逻辑渲染数据之后,通过所述主线程向所述内存清理线程发送第一消息;其中,所述第一消息用于控制启动所述内存清理线程,所述主线程用于处理所述目标应用的逻辑。
11.一种可选的实施方式中,所述通过所述内存清理线程清理所述待清理内存数据,包括:
12.确定所述内存清理线程的内存清理参数,其中,所述内存清理参数包括以下至少之一:清理速度、清理数据的数量、清理周期的数量;
13.通过所述内存清理线程按照所述内存清理参数在所述待清理内存数据中确定待清理数据,并清理所述待清理数据。
14.一种可选的实施方式中,所述内存清理参数包括清理周期的数量,且所述清理周期的数量为多个;
15.所述在基于所述逻辑渲染数据进行画面渲染的过程中,通过所述内存清理线程确定所述待清理内存数据是否满足清理要求,包括:
16.在基于所述逻辑渲染数据进行画面渲染的过程中,在每个所述清理周期到来的时刻,通过所述内存清理线程确定所述待清理内存数据是否满足所述清理要求。
17.一种可选的实施方式中,所述通过所述内存清理线程确定所述待清理内存数据是否满足清理要求,包括:
18.在所述目标应用所属终端设备中确定所述目标应用的已占用内存;
19.确定所述已占用内存中所述目标应用的无效内存数据;
20.通过所述内存清理线程基于所述无效内存数据的数据量确定所述待清理内存数据是否满足清理要求。
21.一种可选的实施方式中,所述通过所述内存清理线程清理所述待清理内存数据,包括:
22.在确定所述待清理内存数据满足所述清理要求的情况下,在所述无效内存数据中确定待清理数据;
23.通过所述内存清理线程清理清理所述无效内存数据中的待清理数据。
24.一种可选的实施方式中,所述在所述无效内存数据中确定待清理数据,包括:
25.在所述无效内存数据中确定与预设清理阈值数量相同的目标无效内存数据,并确定所述目标无效内存数据为所述待清理数据。
26.一种可选的实施方式中,所述方法还包括:
27.在通过所述内存清理线程清理所述待清理内存数据之后,控制所述内存清理线程向所述目标应用的主线程发送第二消息;其中,所述第二消息用于指示所述待清理内存数据清理完成;所述主线程用于处理所述目标应用的逻辑;
28.获取所述主线程基于所述第二消息返回的第三消息,并基于所述第三消息控制所述内存清理线程处于关闭状态。
29.一种可选的实施方式中,所述方法还包括:
30.在确定所述待清理内存数据不满足所述清理要求的情况下,控制所述内存清理线程向所述目标应用的主线程发送第四消息;其中,所述第四消息用于指示所述主线程所述待清理内存数据未执行数据清理操作;所述主线程用于处理所述目标应用的逻辑。
31.第二方面,本公开实施例还提供一种数据清理装置,包括:
32.控制单元,用于确定目标应用中目标画面的逻辑渲染数据,启动内存清理线程,其中,所述内存清理线程用于清理所述目标应用的待清理内存数据;
33.渲染单元,用于基于所述逻辑渲染数据进行画面渲染,得到所述目标画面;
34.确定单元,用于在基于所述逻辑渲染数据进行画面渲染的过程中,通过所述内存清理线程确定所述待清理内存数据是否满足清理要求;如是,通过所述内存清理线程清理所述待清理内存数据。
35.第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
36.第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中
任一种可能的实施方式中的步骤。
37.本公开实施例提供的数据清理方法、装置、计算机设备以及存储介质,在本公开实施例中,在确定出目标应用中目标画面的逻辑渲染数据之后,就可以启动内存清理线程,该内存清理线程可以在基于逻辑渲染数据进行画面渲染的过程中确定待清理内存数据是否满足清理要求,并在满足清理要求时,清理待清理内存数据,从而将内存清理过程和确定逻辑渲染数据的逻辑运算过程错开,减少了应用程序运行过程中的额外开销,保证了应用程序的画面帧率等运行效果。
38.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
39.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
40.图1示出了本公开实施例所提供的一种数据清理方法的流程图;
41.图2示出了本公开实施例所提供的一种现有的数据清理方法的示意图;
42.图3示出了本公开实施例所提供的一种本公开中数据清理方法的示意图;
43.图4示出了本公开实施例所提供的一种数据清理装置的示意图;
44.图5示出了本公开实施例所提供的一种计算机设备的示意图。
具体实施方式
45.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
46.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
47.本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
48.经研究发现,相关技术中,通常在画面的渲染数据的逻辑运算的过程中进行内存垃圾的回收,该垃圾回收的方式将为应用程序的运行带来额外的开销,从而导致应用程序运行过程中的运行效果变差。例如,在该应用程序为游戏的情况下,通常选择在游戏画面的
逻辑运算过程中进行内存垃圾的回收。在某些逻辑运算较为复杂的情况下,额外的垃圾回收操作会带来一定的cpu开销,从而导致游戏画面的帧率下降。
49.基于上述研究,本公开提供了一种数据清理方法、装置、计算机设备以及存储介质。在本公开实施例中,在确定出目标应用中目标画面的逻辑渲染数据之后,就可以启动内存清理线程,该内存清理线程可以在基于逻辑渲染数据进行画面渲染的过程中确定待清理内存数据是否满足清理要求,并在满足清理要求时,清理待清理内存数据。通过上述处理方式,可以将内存清理过程和确定逻辑渲染数据的逻辑运算过程错开,即分别在不同的时段进行内存清理操作和逻辑运算操作,从而减少了应用程序运行过程中的额外开销,保证了应用程序的画面帧率的运行效果。
50.本公开可以用于具有逻辑运算单元与渲染单元的应用程序中,其中,该应用程序中逻辑运算与渲染这两个过程应当是分开的,在通过逻辑运算单元得到目标画面的逻辑渲染数据之后,就可以基于该逻辑渲染数据对目标画面进行渲染。这里,该应用程序可以为游戏,应理解的是,该游戏在运行过程中,首先通过逻辑运算单元得到当前帧画面的逻辑渲染数据,在基于该逻辑渲染数据对当前帧画面进行渲染之后,就可以通过逻辑运算过程计算下一帧的逻辑渲染数据。
51.为便于对本实施例进行理解,首先对本公开实施例所公开的一种数据清理方法进行详细介绍,本公开实施例所提供的数据清理方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备。在一些可能的实现方式中,该数据清理方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
52.参见图1所示,为本公开实施例提供的一种数据清理方法的流程图,所述方法包括步骤s101~s105,其中:
53.s101:确定目标应用中目标画面的逻辑渲染数据,启动内存清理线程,其中,所述内存清理线程用于清理所述目标应用的待清理内存数据。
54.在本公开实施例中,由上述内容可知,目标应用为具有逻辑运算单元与渲染单元的应用程序,例如,该目标应用可以为游戏类应用,其中,通过逻辑运算单元可以得到用于渲染的逻辑渲染数据。这里,可以为该目标应用设置一个用于进行逻辑运算以及渲染的主线程。
55.另外的,还可以为该目标应用设置分支线程,该分支线程可以用于清理目标应用在运行过程中产生的待清理内存数据,其中,该分支线程可以为上述内存清理线程。
56.应理解的是,如图2所示,在现有的内存清理的方案中,通常是在逻辑运算的过程中进行内存清理的,然而,如图3所示,在本公开中,启动内存清理线程是渲染单元基于确定出的逻辑渲染数据对目标画面进行渲染的过程中,因此,本公开实现了将内存清理过程和确定逻辑渲染数据的逻辑运算过程错开,从而减少了应用程序运行过程中的额外开销。
57.在本公开实施例中,在进行每一帧目标画面的渲染前,都可以通过逻辑运算单元计算出这一帧目标画面所对应的逻辑渲染数据,在确定出该目标画面所对应的逻辑渲染数据后,就可以控制启动内存清理线程。
58.s103:基于所述逻辑渲染数据进行画面渲染,得到所述目标画面。
59.在本公开实施例中,在获取到上述逻辑渲染数据之后,就可以通过上述主线程对
该逻辑渲染数据进行画面渲染,从而得到目标画面。另外的,在检测到针对该逻辑渲染数据进行画面渲染完成后,该主线程就可以调用逻辑运算单元进行下一帧目标画面的逻辑渲染数据的预算计算。
60.s105:在基于所述逻辑渲染数据进行画面渲染的过程中,通过所述内存清理线程确定所述待清理内存数据是否满足清理要求;如是,则执行s1071:通过所述内存清理线程清理所述待清理内存数据;如不是,则执行s1072:所述内存清理线程不执行清理所述待清理内存数据的操作。
61.在本公开实施例中,在确定出主线程处于画面渲染的过程中后,就可以运行上述内存清理线程,并通过该内存清理线程确定待清理内存数据是否满足清理要求。这里,上述目标应用在运行的过程中,由于不停的进行运算,该目标应用会在终端设备中占用越来越多的内存,其中,该目标应用的已占用内存可以分为有效内存数据和无效内存数据,待清理内存数据可以为当前时刻应用程序在终端设备中占用的无效内存数据。
62.例如,上述在上述目标应用为游戏的情况下,为了能够在不安装新游戏包的情况下进行热更新,通常需要在编译型语言的基础上,配合解释型脚本语言进行游戏开发。常见的解释型脚本语言包括lua,js等,其中目前在游戏领域使用最为广泛的是lua语言。然而,由于解释型脚本语言的基本语言属性,在使用lua等脚本语言进行大量操作时,脚本语言会产生大量内存垃圾,即上述无效内存数据。
63.具体实施时,首先需要获取针对待清理内存数据设置的清理要求,其中,该清理要求可以为预设清理阈值。在确定待清理内存数据是否满足清理要求的过程中,首先需要判断该待清理内存数据是否达到该预设清理阈值,并在该待清理内存数据达到该预设清理阈值的情况下确定该待清理内存数据满足清理要求。
64.在设置上述预设清理阈值的过程中,该预设清理阈值可以设置为不同的形式,具体的,该预设清理阈值可以设置为具体数值,还可以设置为内存占用比例等形式。
65.在本公开实施例中,在通过内存清理线程清理待清理内存数据的过程中,可以清理全部的该待清理内存数据,也可以清理部分的待清理内存数据。
66.在一种可选的实施方式中,可以清理全部的待清理内存数据,具体实施时,首先需要确定待清理内存在终端设备中的全部数据,并通过上述内存清理线程清理该待清理内存数据中的全部数据。
67.在另一种可选的实施方式中,还可以清理部分的待清理内存数据,具体实施时,首先可以计算该待清理内存数据超出预设清理阈值的超出内存,并基于该超出内存在待清理内存数据中确定出部分数据,这里,在确定该部分数据时,这部分数据可以为超出内存对应的数据,也可以为大于该超出内存对应的数据。然后,就可以通过上述内存清理线程清理这部分数据。
68.通过上述描述可知,在本公开实施例中,在确定出目标应用中目标画面的逻辑渲染数据之后,就可以启动内存清理线程,该内存清理线程可以在基于逻辑渲染数据进行画面渲染的过程中确定待清理内存数据是否满足清理要求,并在满足清理要求时,清理待清理内存数据,从而将内存清理过程和确定逻辑渲染数据的逻辑运算过程错开,减少了应用程序运行过程中的额外开销,保证了应用程序的画面帧率等运行效果。
69.在一个可选的实施方式中,上述步骤s101,确定目标应用中目标画面的逻辑渲染
数据,启动内存清理线程,具体包括如下过程:
70.在所述目标应用的主线程通过逻辑运算得到所述逻辑渲染数据之后,通过所述主线程向所述内存清理线程发送第一消息;其中,所述第一消息用于控制启动所述内存清理线程,所述主线程用于处理所述目标应用的逻辑。
71.在本公开实施例中,在上述目标应用开始运行之后,就可以启动主线程进行逻辑运算,此时,在检测到主线程开始运行之后,就可以同时启动内存清理线程,并阻塞该内存清理线程,以使该内存清理线程等待主线程发送的第一消息,其中,该第一消息可以为一种信号量。这里,在该内存清理线程处于阻塞状态时,该内存清理线程只对第一消息做出响应。
72.主线程在通过逻辑运算单元进行逻辑运算得到逻辑渲染数据之后,就可以通知渲染单元基于该逻辑渲染数据进行画面渲染,并确定第一消息。然后,就可以将该第一消息发送至内存清理线程,以使该内存清理线程结束阻塞状态并启动内存清理。
73.通过上述描述可知,在目标应用的主线程通过逻辑运算得到逻辑渲染数据之后,就可以向内存清理线程发送第一消息以启动该内存清理线程,从而使得该内存清理线程能够更好的把握内存清理时机。
74.在一个可选的实施方式中,上述步骤s105,通过所述内存清理线程确定所述待清理内存数据是否满足清理要求,具体包括如下过程:
75.s1051:在所述目标应用所属终端设备中确定所述目标应用的已占用内存。
76.在本公开实施例中,首先需要在终端设备中确定目标应用的已占用内存。具体的,可以通过内存查询指令查询该目标应用在终端设备中的已占用内存,其中,该内存查询指令可以携带目标应用的应用标识。
77.s1052:确定所述已占用内存中所述目标应用的无效内存数据。
78.在本公开实施例中,已占用内存中包含多个内存对象,其中,目标应用在运行的过程中会不断的引用这些内存对象。因此,可以为已占用内存中包含的内存对象设置引用标识位,在目标应用运行的过程中,其中的内存对象被引用时,该内存对象的引用标识为加1,在该内存对象未被引用时,该内存对象的引用标识位清零。
79.在一种可选的实施方式中,首先可以确定已占用内存中引用标识位为0的内存对象,然后,就可以基于确定出的内存对象确定无效内存数据。
80.在另一种可选的实施方式中,目标应用中包含多个引用方法,其中,每个引用方法均可以对应多个引用的内存对象。因此,在确定无效内存数据的过程中,就可以基于每个引用方法查询该引用方法所匹配的引用对象,然后,就可以确定出已占用内存中不被任何引用方法所引用的内存对象,从而基于确定出的内存对象确定无效内存数据。
81.s1053:通过所述内存清理线程基于所述无效内存数据的数据量确定所述待清理内存数据是否满足清理要求。
82.在本公开实施例中,由上可知,清理要求可以为基于预设清理阈值确定的要求,其中,预设清理阈值可以设置为具体数值;或者为基于内存占用比例确定的要求。因此,在确定待清理内存数据是否满足清理要求的过程中,可以通过以下几种方式进行确定:
83.方式一:
84.在该预设清理阈值为具体数值的情况下,就可以确定待清理内存数据在终端设备
中所占用的内存数值,例如,该待清理内存数据在终端设备中所占用的内存数值可以为200m。然后,就可以将该内存数值和预设清理阈值进行对比,从而确定该待清理内存数据是否超出预设清理阈值,在该待清理内存数据超出预设清理阈值的情况下,就可以确定该待清理内存数据满足清理要求。
85.方式二:
86.在该预设清理阈值为内存占用比例的情况下,在确定待清理内存数据是否满足清理要求的过程中,首先需要获取待清理内存数据以及该目标应用在终端设备中的已占用内存,并确定该待清理内存数据和已占用内存的比值,并确定该比值是否超出预设清理阈值,在该比值超出预设清理阈值时,就可以确定待清理内存数据满足清理要求。例如,该待清理内存数据和已占用内存的比值为70%,预设清理阈值为60%,那么,就可以确定待清理内存数据满足清理要求。
87.通过上述描述可知,在确定目标应用在终端设备中已占用内存之后,就可以确定出该已占用中得无效内存数据,从而便于基于该无效内存数据的数据量确定待清理内存数据是否满足清理要求,提高了内存清理的效率。
88.在一个可选的实施方式中,上述步骤s107,在确定所述待清理内存数据满足所述清理要求的情况下,通过所述内存清理线程清理所述待清理内存数据,具体包括如下过程:
89.s1071:在确定所述待清理内存数据满足所述清理要求的情况下,在所述无效内存数据中确定待清理数据。
90.在本公开实施例中,由上可知,可以将该无效内存数据中的全部数据确定为待清理数据,或者,还可以将该无效内存数据中的至少部分数据确定为待清理数据。在将该无效内存数据中的至少部分数据确定为待清理数据的情况下,确定待清理数据的过程如上述步骤s107所对应的实施方式所述,此处不在赘述。
91.s1072:通过所述内存清理线程清理清理所述无效内存数据中的待清理数据。
92.在本公开实施例中,在确定出待清理数据之后,就可以通过清理标识对确定出的待清理数据进行标记。内存清理线程在进行内存清理的过程中,可以首先对包含清理标志的内存对象进行识别,并对识别出的内存对象中的待清理数据进行清理。
93.通过上述描述可知,通过确定待清理内存数据中的待清理数据的方式,就可以通过内存清理线程对该待清理数据进行清理,从而提高了内存清理线程的清理准确度,并且增加了本方案中内存清理的具体实施方式。
94.在一个可选的实施方式中,上述步骤s1072,在所述无效内存数据中确定待清理数据,具体包括如下过程:
95.在所述无效内存数据确定与预设清理阈值数量相同的目标无效内存数据,并确定所述目标无效内存数据为所述待清理数据。
96.在本公开实施例中,在将该无效内存数据中的至少部分数据确定为待清理数据的情况下,首先可以在无效内存数据中确定与预设清理阈值数量相同的目标无效内存数据,然后就可以将确认出的目标无效内存数据确定为待清理数据。例如,预设清理阈值为500m,那么就可以在无效内存数据中确定出500m的目标无效内存数据,并将这500m的目标无效内存数据确定为待清理数据。
97.具体实施时,可以通过以下几种方式在确定无效内存数据中的目标无效内存数
据:
98.方式一:
99.在本公开实施方式中,首先可以获取预设清理阈值,然后,就可以基于该预设清理阈值,在无效内存数据中确定选取至少一个内存对象,其中,这至少一个内存对象中所包含的数据应和该预设清理阈值相等,然后,就可以将确定出的至少一个内存对象中的数据确定为目标无效内存数据。
100.方式二:
101.在本公开实施例中,首先可以确定无效内存数据所对应的无效内存对象和上述目标应用所包含的引用方法之间的映射关系,这里,可以将无效内存对象所对应的引用方法确定为目标引用方法。然后,就可以获取该目标引用方法的引用等级,其中,引用等级越高的目标引用方法所对应的引用次数越频繁。
102.在获取到目标引用方法的引用等级后,就可以确定出引用等级低于预设等级要求的目标引用方法,并确定该引用等级低于预设等级要求的目标引用方法所对应的至少一个内存对象,然后,就可以将确定出的至少一个内存对象中的数据确定为目标无效内存数据。
103.通过上述描述可知,通过在无效内存数据中确定与预设清理阈值数量相同的目标无效内存数据的方式来确定待清理数据,从而提高了确定待清理数据的效率,进而提高了内存清理数据的效率。
104.在一个可选的实施方式中,上述步骤s107,在确定所述待清理内存数据满足所述清理要求的情况下,通过所述内存清理线程清理所述待清理内存数据,还包括如下过程:
105.(1)、确定所述内存清理线程的内存清理参数,其中,所述内存清理参数包括以下至少之一:清理速度、清理数据的数量、清理周期的数量;
106.(2)、通过所述内存清理线程按照所述内存清理参数在所述待清理内存数据中确定待清理数据,并清理所述待清理数据。
107.在本公开实施例中,首先需要确定内存清理线程的内存清理参数,其中,该内存清理参数为建立该内存清理线程的过程中预设的参数。
108.这里,内存清理参数中的清理速度可以为基于目标应用的内存分配速度进行确定的,具体的,该清理速度可以表现为该内存分配速度倍率的形式,例如,该清理速度可以为内存分配速度的两倍,从而保证内存清理的效率。
109.另外的,每次清理的待清理数据的数据量可以为经验值,即每次清理待清理内存数据时,所清理的待清理数据的数据量相同;该清理数据的数量还可以为可变的,例如,该清理数据的数据量可以基于不同的清理状况进行确定。
110.此外,由于目标应用中每一帧目标画面的渲染时间相对固定,因此上述清理周期的数量可以基于目标应用中每一帧目标画面的渲染时间进行确定。具体的,假设每个清理周期对应的清理时间为5ms,每一帧目标画面的渲染时间为40ms,那么,在设置清理周期的数量时,该清理周期的数量少于8个。
111.或者,在内存清理参数中不包含清理周期的情况下,在每一帧的目标画面的画面渲染的过程中,清理数据的数量可以根据待清理数据的数据量确定。
112.通过上述描述可知,内存清理线程按照可以按照内存清理参数确定待清理数据,用户可以通过修改内存清理参数来控制该内存清理线程运行,从而提高了本方案的灵活
性。
113.在一个可选的实施方式中,上述内存清理参数包括清理周期的数量,且所述清理周期的数量为多个,那么,上述步骤s105,在基于所述逻辑渲染数据进行画面渲染的过程中,通过所述内存清理线程确定所述待清理内存数据是否满足清理要求,还包括如下过程:
114.在基于所述逻辑渲染数据进行画面渲染的过程中,在每个所述清理周期到来的时刻,通过所述内存清理线程确定所述待清理内存数据是否满足所述清理要求。
115.在本公开实施例中,在上述内存清理参数包括清理周期的数量,且清理周期的数量为多个的情况下,可以在每个清理周期开始时均通过内存清理线程确定待清理内存数据是否满足清理要求。
116.具体实施时,可以在每个清理周期开始时确定待清理内存数据是否满足清理要求,在待清理内存数据满足清理要求时,就可以通过内存清理线程对待清理内存数据的待清理数据执行清理操作。另外,在确定出待清理内存数据不满足清理要求时,就可以向该内存清理线程返回确定结果,以使该内存清理线程挂起,这里,该内存清理线程处于挂起状态时不执行内存清理操作,并等待下个清理周期的到来。
117.通过上述描述可知,在内存清理参数包括清理周期的数量,且清理周期的数量为多个的情况下,可以在每个清理周期到来时确定待清理内存数据是否满足清理要求,从而减少内存清理线程的清理次数,降低终端设备的运算量。
118.在一个可选的实施方式中,上述方法还包括如下过程:
119.在确定所述待清理内存数据不满足所述清理要求的情况下,控制所述内存清理线程向所述目标应用的主线程发送第四消息;其中,所述第四消息用于指示所述主线程所述待清理内存数据未执行数据清理操作;所述主线程用于处理所述目标应用的逻辑。
120.在一种可选的实施方案中,在上述内存清理参数不包括清理周期的情况下,在一帧目标画面的开始进行画满渲染时,均会确定待清理内存数据是否满足清理要求。在该待清理内存数据不满足清理要求的情况下,就可以不执行内存清理操作,并控制内存清理线程向目标应用的主线程发送第四消息,以使主线程基于该第四消息对内存清理线程执行挂起操作,从而使得该内存清理线程进入阻塞状态,其中,该内存清理线程在进入挂起状态后不会执行内存清理操作。
121.在另一种可选的实施方式中,在上述内存清理参数包括清理周期的数量,且清理周期的数量为多个的情况下,在最后一个清理周期到来时,若确定出待清理内存数据不满足清理要求,就可以不执行内存清理操作,并控制内存清理线程向目标应用的主线程发送第四消息,以使主线程基于该第四消息对内存清理线程执行挂起操作,从而使得该内存清理线程进入挂起状态。
122.通过上述描述可知,在确定待清理内存数据不满足清理要求的情况下,就可以控制内存清理线程向主线程发送第四消息,以使该主线程对内存清理线程执行阻塞操作,从而进一步减少内存清理线程的清理次数,降低终端设备的运算量。
123.在一个可选的实施方式中,上述方法还包括如下过程:
124.(1)、在通过所述内存清理线程清理所述待清理内存数据之后,控制所述内存清理线程向所述目标应用的主线程发送第二消息;其中,所述第二消息用于指示所述待清理内存数据清理完成;所述主线程用于处理所述目标应用的逻辑;
125.(2)、获取所述主线程基于所述第二消息返回的第三消息,并基于所述第三消息控制所述内存清理线程处于关闭状态。
126.在本公开实施例中,在确定出待清理内存数据清理完成后,或者清理周期结束后,就可以确定上述内存清理线程完成了内存清理任务,然后,就可以控制该内存清理线程向目标应用的主线程发送第二消息。
127.主线程在接收到上述第二消息后,就可以基于该第二消息确定第三消息,并将该第三消息返回至内存清理线程,其中,该第三消息用于关闭该内存清理线程。需要说明的是,该主线程在开始下一帧目标画面的逻辑运算时,就可以控制开启该内存清理线程。
128.通过上述描述可知,在通过内存清理线程清理待清理内存数据之后,就可以向主线程发送第二消息,以使该主线程基于该第二消息向内存清理线程发送第三消息,从而关闭该内存清理线程。
129.综上,在本公开实施例中,在确定出目标应用中目标画面的逻辑渲染数据之后,就可以启动内存清理线程,该内存清理线程可以在基于逻辑渲染数据进行画面渲染的过程中确定待清理内存数据是否满足清理要求,并在满足清理要求时,清理待清理内存数据,从而将内存清理过程和确定逻辑渲染数据的逻辑运算过程错开,减少了应用程序运行过程中的额外开销,保证了应用程序的画面帧率等运行效果。
130.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
131.基于同一发明构思,本公开实施例中还提供了与数据清理方法对应的数据清理装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述数据清理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
132.参照图4所示,为本公开实施例提供的一种数据清理装置的示意图,所述装置包括:控制单元41、渲染单元42、确定单元43;其中,
133.控制单元41,用于在确定出目标应用中目标画面的逻辑渲染数据之后,控制启动内存清理线程,其中,所述内存清理线程用于清理所述目标应用的待清理内存数据;
134.渲染单元42,用于基于所述逻辑渲染数据进行画面渲染,得到所述目标画面;
135.确定单元43,用于在基于所述逻辑渲染数据进行画面渲染的过程中,通过所述内存清理线程确定所述待清理内存数据是否满足清理要求;如是,通过所述内存清理线程清理所述待清理内存数据。
136.在本公开实施例中,在确定出目标应用中目标画面的逻辑渲染数据之后,就可以启动内存清理线程,该内存清理线程可以在基于逻辑渲染数据进行画面渲染的过程中确定待清理内存数据是否满足清理要求,并在满足清理要求时,清理待清理内存数据,从而将内存清理过程和确定逻辑渲染数据的逻辑运算过程错开,减少了应用程序运行过程中的额外开销,保证了应用程序的画面帧率等运行效果。
137.一种可能的实施方式中,控制单元41,还用于:
138.在所述目标应用的主线程通过逻辑运算得到所述逻辑渲染数据之后,通过所述主线程向所述内存清理线程发送第一消息;其中,所述第一消息用于控制启动所述内存清理线程,所述主线程用于处理所述目标应用的逻辑。
139.一种可能的实施方式中,确定单元43,还用于:
140.确定所述内存清理线程的内存清理参数,其中,所述内存清理参数包括以下至少之一:清理速度、清理数据的数量、清理周期的数量;
141.通过所述内存清理线程按照所述内存清理参数在所述待清理内存数据中确定待清理数据,并清理所述待清理数据。
142.一种可能的实施方式中,所述内存清理参数包括清理周期的数量,且所述清理周期的数量为多个,确定单元43,还用于:
143.所述在基于所述逻辑渲染数据进行画面渲染的过程中,通过所述内存清理线程确定所述待清理内存数据是否满足清理要求,包括:
144.在基于所述逻辑渲染数据进行画面渲染的过程中,在每个所述清理周期到来的时刻,通过所述内存清理线程确定所述待清理内存数据是否满足所述清理要求。
145.一种可能的实施方式中,确定单元43,还用于:
146.在所述目标应用所属终端设备中确定所述目标应用的已占用内存;
147.确定所述已占用内存中所述目标应用的无效内存数据;
148.通过所述内存清理线程基于所述无效内存数据的数据量确定所述待清理内存数据是否满足清理要求。
149.一种可能的实施方式中,确定单元43,还用于:
150.在确定所述待清理内存数据满足所述清理要求的情况下,在所述无效内存数据中确定待清理数据;
151.通过所述内存清理线程清理清理所述无效内存数据中的待清理数据。
152.一种可能的实施方式中,确定单元43,还用于:
153.在所述无效内存数据中确定与预设清理阈值数量相同的目标无效内存数据,并确定所述目标无效内存数据为所述待清理数据。
154.一种可能的实施方式中,该装置还用于:
155.在通过所述内存清理线程清理所述待清理内存数据之后,控制所述内存清理线程向所述目标应用的主线程发送第二消息;其中,所述第二消息用于指示所述待清理内存数据清理完成;所述主线程用于处理所述目标应用的逻辑;
156.获取所述主线程基于所述第二消息返回的第三消息,并基于所述第三消息控制所述内存清理线程处于关闭状态。
157.一种可能的实施方式中,该装置还用于:
158.在确定所述待清理内存数据不满足所述清理要求的情况下,控制所述内存清理线程向所述目标应用的主线程发送第四消息;其中,所述第四消息用于指示所述主线程所述待清理内存数据未执行数据清理操作;所述主线程用于处理所述目标应用的逻辑。
159.对应于图1中的数据清理方法,本公开实施例还提供了一种计算机设备500,如图5所示,为本公开实施例提供的计算机设备500结构示意图,包括:
160.处理器51、存储器52、和总线53;存储器52用于存储执行指令,包括内存521和外部存储器522;这里的内存521也称内存储器,用于暂时存放处理器51中的运算数据,以及与硬盘等外部存储器522交换的数据,处理器51通过内存521与外部存储器522进行数据交换,当所述计算机设备500运行时,所述处理器51与所述存储器52之间通过总线53通信,使得所述
处理器51执行以下指令:
161.确定目标应用中目标画面的逻辑渲染数据,启动内存清理线程,其中,所述内存清理线程用于清理所述目标应用的待清理内存数据;
162.基于所述逻辑渲染数据进行画面渲染,得到所述目标画面;
163.在基于所述逻辑渲染数据进行画面渲染的过程中,通过所述内存清理线程确定所述待清理内存数据是否满足清理要求;如是,通过所述内存清理线程清理所述待清理内存数据。
164.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的数据清理方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
165.本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的数据清理方法的步骤,具体可参见上述方法实施例,在此不再赘述。
166.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
167.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
168.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
169.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
170.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
171.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1