CN110673956B - 回收线程创建方法、装置、计算机设备以及存储介质 - Google Patents

回收线程创建方法、装置、计算机设备以及存储介质 Download PDF

Info

Publication number
CN110673956B
CN110673956B CN201910903605.4A CN201910903605A CN110673956B CN 110673956 B CN110673956 B CN 110673956B CN 201910903605 A CN201910903605 A CN 201910903605A CN 110673956 B CN110673956 B CN 110673956B
Authority
CN
China
Prior art keywords
terminal
thread
threads
recovery
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910903605.4A
Other languages
English (en)
Other versions
CN110673956A (zh
Inventor
周华材
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN201910903605.4A priority Critical patent/CN110673956B/zh
Publication of CN110673956A publication Critical patent/CN110673956A/zh
Application granted granted Critical
Publication of CN110673956B publication Critical patent/CN110673956B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种回收线程创建方法,属于终端技术领域。所述方法由终端执行,所述方法包括:获取终端的性能参数;性能参数是终端的中央处理器CPU核数以及运行内存的剩余量中的至少一种;根据性能参数,获取第一线程数量;创建与第一线程数量相同的回收线程,回收线程用于回收终端中占用运行内存的资源。本申请通过终端获取自身的性能参数,根据该性能参数,确定需要创建的回收线程的数量,使得终端可以根据自身当前的性能参数,灵活配置对应数量的回收线程,增加终端的运行内存的回收效率。

Description

回收线程创建方法、装置、计算机设备以及存储介质
技术领域
本申请涉及终端技术领域,特别涉及一种回收线程创建方法、装置、计算机设备以及存储介质。
背景技术
随着终端技术领域的发展,应用程序(Application,APP)的种类越来越多,人们在终端中相应的也安装有各种各样的APP,终端在运行这些APP时,该APP需要交互的数据暂时通过自身的运行内存存储。
在相关技术中,对于终端内部运行内存的回收问题,往往采用以下方式:在终端启动时,在终端的内核中创建一个kswapd线程,用来及时回收终端的运行内存,从而提供给其他APP使用运行内存。例如,当终端中同时运行有3个APP时,用户在前台和后台切换这几个APP时,终端可以在后台通过上述kswapd线程对后台运行的APP所占用的运行内存进行回收,从而提供给前台运行的APP足够的运行内存,使得在前台运行的APP可以使用到足够的运行内存暂时存储需要交互的数据。
对于上述方案,当终端中采用多个中央处理器(central processing unit,CPU)运行某些APP时,如果该kswapd线程对运行内存回收不及时,可能导致这些APP运行不流畅等问题。
发明内容
为了提高终端对运行内存的回收效率,提高终端运行应用程序的流畅性,本申请实施例提供了一种回收线程创建方法、装置、计算机设备以及存储介质。所述技术方案如下:
一个方面,本申请实施例提供了一种回收线程创建方法,所述方法由终端执行,所述方法包括:
获取终端的性能参数;所述性能参数是所述终端的中央处理器CPU核数以及所述运行内存的剩余量中的至少一种;
根据所述性能参数,获取第一线程数量;
创建与所述第一线程数量相同的所述回收线程,所述回收线程用于回收所述终端中占用所述运行内存的资源。
一个方面,本申请实施例提供了一种回收线程创建装置,所述装置用于终端中,所述装置包括:
参数获取模块,用于获取所述终端的性能参数;所述性能参数是所述终端的中央处理器CPU核数以及运行内存的剩余量中的至少一种;
数量获取模块,用于根据所述性能参数,获取第一线程数量;
线程创建模块,用于创建与所述第一线程数量相同的回收线程,所述回收线程用于回收所述终端中占用所述运行内存的资源。
一个方面,本申请实施例提供了一种计算机设备,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段应用程序、代码集或指令集,所述至少一条指令、所述至少一段应用程序、所述代码集或指令集由所述处理器加载并执行以实现如上述一个方面所述的回收线程创建方法。
一个方面,本申请实施例提供了一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段应用程序、代码集或指令集,所述至少一条指令、所述至少一段应用程序、所述代码集或指令集由处理器加载并执行以实现如上述一个方面所述的回收线程创建方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
获取终端的性能参数;性能参数是终端的中央处理器CPU核数以及运行内存的剩余量中的至少一种;根据性能参数,获取第一线程数量;创建与第一线程数量相同的回收线程,回收线程用于回收终端中占用运行内存的资源。本申请通过终端获取自身的性能参数,根据该性能参数,确定需要创建的回收线程的数量,使得终端可以根据自身当前的性能参数,灵活配置对应数量的回收线程,增加终端的运行内存的回收效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一示例性实施例提供的一种回收线程创建方法的方法流程图;
图2是本申请一示例性实施例提供的一种回收线程创建方法的方法流程图;
图3是本申请一示例性实施例提供的一种回收线程创建方法的方法流程图;
图4是本申请一示例性实施例提供的回收线程创建装置的结构框图;
图5是本申请一个示例性实施例提供的终端的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请提供的方案,可以用于人们在日常生活中使用终端时,需要终端启用回收线程,对终端的运行内存进行回收的现实场景中,为了便于理解,下面首先对本申请实施例涉及的一些名词及其应用场景进行简单介绍。
运行内存也称作主存,是指终端在运行应用程序时该应用程序所运行过程中占用的内存,可以用于临时存储数据,并与中央处理器(central processing unit,CPU)交换高速缓存数据,一般可以使用随机存取存储器(Random Access Memory,RAM)实现。
线程(thread)是指操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。内核线程是指直接由操作系统内核本身启动的进程。
Kswapd线程是linux系统中具有回收功能的一种内核线程。
中央处理器(central processing unit,CPU)是计算机系统的运算和控制核心,是信息处理、应用程序运行的最终执行单元。
随着终端技术领域的发展,终端中安装的应用程序的种类越来越多,并且终端也支持多个应用程序同时运行。在终端中运行这些应用程序的过程中,终端往往会将这些运行的应用程序在运行过程中产生的一些交互数据暂时通过自身的运行内存进行存储,从而保证终端运行这些应用程序的过程中数据交互的流畅性。
可选的,本申请中提到的终端可以是具有建立用于回收运行内存的线程的终端,比如,该终端可以是手机、平板电脑、电子书阅读器、智能眼镜、智能手表、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑、膝上型便携计算机和台式计算机等等。
在终端中,每个运行的应用程序都会占用终端的运行内存,换句话说,终端在运行每个应用程序时,都会为该应用程序划分一部分运行内存来存储该应用程序在运行过程中的数据,当该应用程序在后台运行时或者被关闭时,终端也会将该应用程序在运行过程中的运行内存进行回收,提供给其他运行的应用程序,实现运行内存的回收再利用。其中,对于运行内存的回收再利用,终端一般都是通过线程来控制的。例如,对于Android Linux系统的终端启动时,终端可以在内核线程中创建一个kswapd线程用于回收运行内存,缓解运行内存紧张的情况。
可选的,上述创建的kswapd线程可以周期性地工作,或者,也可以由终端主动调用工作。比如,在终端运行过程中,kswapd线程可以主动周期性地自主启动,并执行内存回收的工作。或者,终端启动时创建的kswapd线程一开始可以处于休眠状态,当终端中开始运行应用程序时可以启用该kswapd线程。本公开对于kswapd线程具体如何工作并不加以限定。
例如,当终端中运行有5个应用程序时,前台运行的应用程序对运行内存占用的较大,当用户将前台运行的应用程序进行切换时,此时,从前台切换至后台运行的应用程序所占用的运行内存的需求量可以减小,而从后台切换至前台运行的应用程序所占用的运行内存的需求量可以增大,终端可以将之前处于前台运行的应用程序所占用的运行内存进行回收,并分配给当前在前台运行的应用程序使用,从而实现运行内存的回收再利用。
相关技术中,由于在上述终端启动时,创建的kswapd线程有且只有一个,即,在终端运行过程中,所能启用的用于运行内存回收的线程只有一个。随着科技的发展,终端中已经可以支持多个CPU运行应用程序,比如,4核、8核、16核等,当终端中运行的应用程序较为复杂(比如,占用几个吉字节(Gigabyte,GB)的游戏应用程序等),如果采用这一个线程来完成运行内存的回收,可能使得终端的内存回收效率较低,造成应用程序运行时的卡顿以及运行不流畅等问题。
为了提高终端对运行内存的回收效率,避免终端运行多个运行应用程序时因运行内存回收不及时导致的运行不流畅等问题,本申请提供了一种解决方案,可以满足不同的应用程序对运行内存的需求,及时回收再利用运行内存。请参考图1,其示出了本申请一示例性实施例提供的一种回收线程创建方法的方法流程图。该方法可以由上述终端执行,如图1所示,该回收线程创建方法包括以下步骤:
步骤101,获取终端的性能参数;性能参数是终端的中央处理器CPU核数以及运行内存的剩余量中的至少一种。
可选的,对于终端中安装的各个应用程序,终端在运行某个应用程序时,终端会将该应用程序运行过程中需要交互的部分数据会暂时存储起来,终端为这些数据暂时分配的存储空间即为该应用程序占用的运行内存。比如,应用程序一在运行时需要占用20兆字节(Megabyte,MB)的存储空间来存储数据,那么,终端可以为该应用程序一分配对应的20MB的运行内存,从而暂时存储该应用程序的数据。
可选的,对于性能参数是CPU核数时,相当于终端在运行某一应用程序时,当前终端正在使用的CPU核数,或者,终端自身拥有的所有的CPU核数。比如上述提到的4核、8核、16核等CPU,在一种可能实现的方式中,对于4核的终端,该终端在实际运行某个应用程序的过程中,启用1核、2核或者3核来运行,根据实际需求,对启用的CPU核数进行调整。在本步骤中,获取CPU核数便可以包括终端实际启用的CPU核数以及终端中设置的CPU核数两种数据。
可选的,对于性能参数是运行内存的剩余量时,终端在出厂时都可以提前设置固定大小的运行内存,来提供终端运行应用程序。比如,终端中的2GB运行内存,可以理解为终端中提供运行应用程序的交互数据存储的空间共有2GB。当终端中某个应用程序在运行时,需要占用500MB的运行内存,终端可以从这2GB的存储空间中分配500MB给该应用程序使用,如果此时终端获取运行内存的剩余量时,可以得到(2GB-500MB)的存储空间大小。在本步骤中,获取运行内存的剩余量便可以包括终端实际剩余的运行内存大小以及终端中设置的运行内存总量两种数据。
步骤102,根据性能参数,获取第一线程数量。
其中,第一线程数量是终端需要创建的回收线程的数量。比如,终端中可以存储有性能参数和第一线程数量之间的对应关系表,通过获取到的性能参数,查询该对应关系表,得到对应的第一线程数量。
步骤103,创建与第一线程数量相同的回收线程,回收线程用于回收终端中占用运行内存的资源。
终端在系统内核中需要建立回收线程来回收运行内存,即,比如终端中运行上述应用程序一时,为该应用程序一分配了对应的20MB的运行内存,当该应用程序一被用户或者终端关闭后,终端可以通过建立的回收线程,将该20MB的运行内存进行回收,即将该应用程序一运行过程中占用这20MB的资源进行回收,使得终端的运行内存的剩余量增加20MB,从而提供给其他需要使用的应用程序。可选的,该应用程序一运行过程中占用这20MB的资源可以是终端在运行应用程序一过程中缓存的数据、创建的用于执行程序的其他线程等。
可选的,该回收线程可以是上述提到的kswapd线程,也可以是其他可以用来回收运行内存的线程等,本申请实施例对具体的回收线程的形式此并不加以限定。在本申请实施例中终端可以根据上述获取到的性能参数,从终端中获取与此次需要创建的回收线程的数量。
终端在创建回收线程时,可以将上述获取到的第一线程数量作为此次创建回收线程的参数,从而创建出第一线程数量的回收线程。比如,上述步骤中获取到第一线程数量是4个,终端此次便可以创建4个回收线程。
综上所述,获取终端的性能参数;性能参数是终端的中央处理器CPU核数以及运行内存的剩余量中的至少一种;根据性能参数,获取第一线程数量;创建与第一线程数量相同的回收线程,回收线程用于回收终端中占用运行内存的资源。本申请通过终端获取自身的性能参数,根据该性能参数,确定需要创建的回收线程的数量,使得终端可以根据自身当前的性能参数,灵活配置对应数量的回收线程,增加终端的运行内存的回收效率。
本申请下面的实施例以终端中创建的回收线程是kswapd线程为例,对上述图1所示的方案进行详细介绍。请参考图2,其示出了本申请一示例性实施例提供的一种回收线程创建方法的方法流程图。该方法可以由上述终端执行,如图2所示,该回收线程创建方法包括以下步骤:
步骤201,获取终端的性能参数;性能参数是终端的中央处理器CPU核数以及运行内存的剩余量中的至少一种。
可选的,终端可以在自身启动的过程中获取自身的性能参数,也可以在正常运行过程中,周期性获取自身的性能参数,或者,终端可以在自身运行任意一个应用程序时,获取自身的性能参数。
在一种可能实现的方式中,在终端启动时可以获取终端的性能参数。比如,终端在自身启动过程中,获取自身的CPU核数,如果终端是4核的,那么获取到的终端的性能参数就是4核,如果终端是8核的,那么获取到的终端的性能参数就是8核,以此类推。或者,终端在自身启动过程中,获取自身的运行内存的剩余量,如果终端的运行内存是2GB,那么获取到的终端的性能参数就是2GB,如果终端的运行内存是4GB,那么获取到的终端的性能参数就是4GB,以此类推。
在一种可能实现的方式中,在终端的前台在运行应用程序时,获取终端的性能参数。比如,终端在自身运行应用程序时,获取自身的CPU核数,如果终端是4核的,那么获取到的终端的性能参数就是4核,如果终端是8核的,那么获取到的终端的性能参数就是8核,以此类推。在一种可能实现的方式中,终端在运行应用程序时,获取当前终端使用的CPU核数,即,终端在运行过程中,实际使用的CPU核数与自身总共的CPU核数并不相同,为了提高创建的回收线程的数量更加符合终端当前运行的情况,终端可以获取实际使用的CPU核数。例如,当终端运行一个应用程序时,终端启用了1个CPU,那么,此时终端如果获取终端的性能参数时,获取到的终端的性能参数可以是1核,如果终端运行另一个应用程序时,终端启用了2个CPU,那么,终端获取到的终端的性能参数可以是2核。
在一种可能实现的方式中,终端在自身运行应用程序时,获取自身的运行内存的剩余量,如果终端的运行内存是2GB,已经分配给应用程序使用的有0.5GB,那么,终端获取到的终端的性能参数就是1.5GB,如果终端的运行内存是4GB,已经分配给应用程序使用的有1GB,那么获取到的终端的性能参数就是3GB,以此类推。
可选的,上述几种获取运行内存的性能参数的方式中也可以搭配使用,比如,终端获取到的性能参数既包含终端的CPU核数,也包含运行内存的剩余量,两种参数都可以获取到。
步骤202,根据性能参数,获取第一线程数量。
由上述方案可知,终端对运行内存进行回收时,可以采用建立回收线程的方式,终端通过在创建用于回收运行内存的回收线程,对终端中的运行内存进行回收再利用。在一种可能实现的方式中,终端在启动时直接创建回收线程,并使这些回收线程处于休眠状态,在终端需要使用回收线程对运行内存进行回收时,终端可以启用创建好的回收线程。或者,终端也可以在使用过程中创建回收线程,从而启用创建的回收线程。
其中,对于上述方式中,终端获取到的CPU核数和/或运行内存的剩余量,终端都可以根据获取到的性能参数与第一线程数量之间的对应关系,获取与性能参数对应的第一线程数量。例如,终端中可以预先存储有性能参数与第一线程数量之间的对应关系表,请参考表1,其示出了本申请实施例涉及的一种CPU核数与第一线程数量之间的对应关系的关系表。
CPU核数 第一线程数量
1核 1个
2核 1个
3核 2个
4核 2个
8核 4个
…… ……
表1
如表1所示,其中包含了CPU核数与第一线程数量之间的对应关系,当终端获取到CPU核数之后,可以通过查询上述表1,从而得到对应的第一线程数量。当终端获取到的CPU核数为4核时,终端可以通过上述表1得到此次需要创建的回收线程的数量为2个。可选的,上述表1中的CPU核数也可以是以区间的形式表示,即,表1中包含的是CPU核数区间与第一线程数量之间的对应关系,终端在根据上述表1获取对应的第一线程数量时,可以先确定获取到的性能参数(CPU核数区间)的参数区间,从而得到对应的第一线程数量。
在一种可能实现的方式中,终端中也可以预先存储有运行内存的剩余量与第一线程数量之间的对应关系表,请参考表2,其示出了本申请实施例涉及的一种运行内存的剩余量与第一线程数量之间的对应关系的关系表。
运行内存的剩余量 第一线程数量
0.3GB 4个
0.6GB 4个
1GB 3个
1.5GB 2个
…… ……
表2
如表2所示,其中包含了运行内存的剩余量与第一线程数量之间的对应关系,当终端获取到运行内存的剩余量之后,也可以通过查询上述表2,从而得到对应的第一线程数量。当终端获取到的运行内存的剩余量为1GB时,终端可以通过上述表2得到此次需要创建的回收线程的数量为2个。类似的,上述表2中的运行内存的剩余量也可以是以区间的形式表示,即,表1中包含的是运行内存的剩余量区间与第一线程数量之间的对应关系,终端在根据上述表2获取对应的第一线程数量时,可以先确定获取到的性能参数(运行内存的剩余量)的参数区间,从而得到对应的第一线程数量。
在一种可能实现的方式中,终端还可以根据性能参数计算第一线程数量,获取与性能参数对应的第一线程数量。比如,终端中可以预先存储有机器学习模型,该机器学习模型的输入参数为终端的性能参数,该机器学习模型的输出可以为第一线程数量。终端可以将获取的CPU核数输入至该机器学习模型,从而通过该机器学习模型计算出对应的第一线程数量。或者,该机器学习模型的输入参数为终端的运行内存的剩余量,该机器学习模型的输出为第一线程数量。终端可以将获取的运行内存的剩余量输入至该机器学习模型,从而通过该机器学习模型计算出对应的第一线程数量。
步骤203,创建与第一线程数量相同的回收线程,回收线程用于回收终端中占用运行内存的资源。
可选的,终端在得到该第一线程数量之后,可以通过在内核线程中创建相应数量的kswapd线程。对应上面的两种获取运行内存的性能参数的实现方式,终端相应的也可以在启动时,创建回收线程,或者,终端也可以在运行应用程序时,创建回收线程。可选的,回收线程的描述可以参考上述步骤103中的内容,此处不再赘述。
步骤204,在终端的前台运行应用程序时,获取运行内存的回收效率。
其中,回收效率用于指示终端当前启用的回收线程对运行内存的回收速度。比如,终端可以计算预设时间段内的回收效率,该预设时间段可以是终端开始运行应用程序的0.5秒,终端可以获取该时间段内自身所回收的运行内存的总量,从而根据该回收的运行内存的总量计算出该预设时间段内的回收效率。例如,终端在前台开始运行应用程序一时,获取到该0.5秒时间段内终端回收的运行内存的总量为50兆字节(Megabyte,MB),那么,终端可以计算出运行内存的回收效率为100MB/秒。可选的,该预设时间段可以由运维人员或者开发人员预先在终端中设置。
可选的,对于上述创建的第一线程数量的回收线程,终端可以在没有运行应用程序时将创建的回收线程置于休眠状态,在需要使用创建的回收线程时,可以将这些回收线程部分或者全部启用,从而实现利用回收线程对运行内存的回收再利用。例如,在实际应用中,终端还可以在运行应用程序时,获取运行内存的回收效率。
步骤205,根据回收效率以及性能参数,获取第二线程数量。
其中,第二线程数量是终端当前启用的回收线程的最少数量。即,终端在当前状态的运行过程中,终端可以根据回收效率以及性能参数获得自身至少需要使用的回收线程的数量,从而得到自身需要启用的回收线程的数量。
可选的,上述步骤202中采用的机器学习模型中,也可以将回收效率作为该模型的输入参数之一,从而根据该回收效率以及性能参数,计算得到第二线程数量。在一种可能实现的方式,在终端的前台在运行应用程序时,获取预设时间段内的运行内存的回收效率以及CPU核数,终端可以将回收效率以及CPU核数作为模型的输入,从而得到第二线程数量。比如,终端获取到的运行内存的回收效率为100MB/秒,CPU核数是2核,终端根据机器学习模型计算得到第二线程数量可以是2个等。在一种可能实现的方式,在终端的前台在运行应用程序时,获取预设时间段内的运行内存的回收效率以及运行内存的剩余量,终端可以将回收效率以及运行内存的剩余量作为模型的输入,从而得到第二线程数量。比如,终端获取到的运行内存的回收效率为100MB/秒,运行内存的剩余量是500M,终端根据机器学习模型计算得到第二线程数量可以是3个。
步骤206,当第二线程数量不大于第一线程数量时,启用与第二线程数量相同数量的回收线程。
当终端获取到的当前启用的回收线程的最少数量不大于上述获取的第一线程数量,因为终端中已经创建了第一线程数量的回收线程,因此,直接启用与第二线程数量相同数量的回收线程即可。比如,当上述获取的第一线程数量为4个,相当于终端在启动过程中或者在运行应用程序的过程中,已经创建了4个用于回收运行内存的回收线程,如果在上述步骤305中,终端获取到的第二线程数量为2个时,终端可以直接从创建的4个回收线程中随机选择2个来进行运行内存的回收。可选的,终端在启用回收线程时,也可以启用多于第二线程数量的回收线程,比如,在本实施例中,终端也可以直接从创建的4个回收线程中随机选择3个或者4个来进行运行内存的回收。本申请实施例对此并不加以限定。
可选的,当第二线程数量大于第一线程数量时,终端还可以获取目标数量,创建与目标数量相同的回收线程,回收线程用于回收运行内存;启用目标数量的回收线程。其中,目标数量是第一线程数量与第二线程数量差值的绝对值。
即,当终端获取到的当前启用的回收线程的最少数量大于上述获取的第一线程数量,由于终端中创建的第一线程数量的回收线程并不能满足当前应用程序对运行内存的回收需求,因此,终端在启用与第二线程数量相同数量的回收线程之外,还需要创建剩余的回收线程。比如,当上述获取的第一线程数量为2个,相当于终端在启动过程中或者在运行应用程序的过程中,已经创建了2个用于回收运行内存的回收线程,如果在上述步骤305中,终端获取到的第二线程数量为4个时,终端获取到的目标数量是2个,那么,终端也可以创建目标数量(2个)的回收线程,然后启用创建的回收线程。即,终端可以将创建的第一线程数量(2个)的回收线程启用,并且再次创建2个回收线程,并启用创建的这2个回收线程。
可选的,当应用程序停止运行时,终端还可以关闭上述目标数量的回收线程。本申请实施例中,终端还可以对创建过的回收线程进行回收再利用。比如,当终端在运行应用程序一时,创建了2个回收线程,当终端运行应用程序二时,需要使用一个回收线程,则终端可以暂时将这两个回收线程进行关闭或者冻结等,终端可以在运行应用程序二时,通过上述步骤获取终端运行该应用程序二时,终端需要使用的回收线程的数量,从而将之前创建的回收线程再次启用,无需重新创建。
综上所述,获取终端的性能参数;性能参数是终端的中央处理器CPU核数以及运行内存的剩余量中的至少一种;根据性能参数,获取第一线程数量;创建与第一线程数量相同的回收线程,回收线程用于回收终端中占用运行内存的资源。本申请通过终端获取自身的性能参数,根据该性能参数,确定需要创建的回收线程的数量,使得终端可以根据自身当前的性能参数,灵活配置对应数量的回收线程,增加终端的运行内存的回收效率。
以上述终端是手机,获取运行内存的性能参数是在该手机启动时获取的为例,对上述图2所示的方法进行举例说明。请参考图4,其示出了本申请一示例性实施例提供的一种手机中回收线程创建方法的方法流程图。该方法可以由上述手机执行,如图3所示,该回收线程创建方法包括以下步骤:
步骤301,在手机开机时识别CPU核数。
当用户将手机开机时,手机可以自动获取自身的CPU核数,比如,获取到的CPU核数为4核、8核、16核等。
步骤302,手机获取与CPU核数对应的第一线程数量。
可选的,手机可以按照上述步骤202中的对应关系表获取该第一线程数量,此处不再赘述。
步骤303,手机创建第一线程数量的回收线程。
手机在得到第一线程数量后,可以通过线程创建对应的应用程序,创建第一线程数量的回收线程。
步骤304,手机启用回收线程。
当手机需要对自身的运行内存进行回收时,手机可以启用上述创建的回收线程。此处可以参照上述步骤204至步骤206中的相关描述,此处不再赘述。
综上所述,获取终端的性能参数;性能参数是终端的中央处理器CPU核数以及运行内存的剩余量中的至少一种;根据性能参数,获取第一线程数量;创建与第一线程数量相同的回收线程,回收线程用于回收终端中占用运行内存的资源。本申请通过终端获取自身的性能参数,根据该性能参数,确定需要创建的回收线程的数量,使得终端可以根据自身当前的性能参数,灵活配置对应数量的回收线程,增加终端的运行内存的回收效率,扩展了包含不同的性能参数的终端中回收线程的使用场景。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图4,其示出了本申请一示例性实施例提供的回收线程创建装置的结构框图。该回收线程创建装置400可以用于终端中,以执行图1、图2或者图3所示实施例提供的方法中由终端执行的全部或者部分步骤。该回收线程创建装置400可以包括:参数获取模块410,第一数量获取模块420以及第一线程创建模块430。
所述参数获取模块410,用于获取所述终端的性能参数;所述性能参数是所述终端的中央处理器CPU核数以及运行内存的剩余量中的至少一种;
所述第一数量获取模块420,用于根据所述性能参数,获取第一线程数量,;
所述第一线程创建模块430,用于创建与所述第一线程数量相同的回收线程,所述回收线程用于回收所述终端中占用所述运行内存的资源。
综上所述,本申请通过终端获取自身的性能参数,根据该性能参数,确定需要创建的回收线程的数量,使得终端可以根据自身当前的性能参数,灵活配置对应数量的回收线程,增加终端的运行内存的回收效率,扩展了包含不同的性能参数的终端中回收线程的使用场景。
可选的,所述第一数量获取模块420,包括:第一获取单元以及第二获取单元;
所述第一获取单元,用于根据所述性能参数与所述第一线程数量之间的对应关系,获取与所述性能参数对应的所述第一线程数量;
所述第二获取单元,用于根据所述性能参数计算所述第一线程数量,获取与所述性能参数对应的所述第一线程数量。
可选的,所述参数获取模块410,包括:第三获取单元以及第四获取单元;
所述第三获取单元,用于在所述终端启动时,获取所述运行内存的性能参数;
所述第四获取单元,用于在所述终端的前台在运行应用程序时,获取所述终端的性能参数。
可选的,所述装置还包括:效率获取模块,第二数量获取模块以及第一线程启用模块;
所述效率获取模块,用于在所述终端的前台运行应用程序时,获取所述运行内存的回收效率,所述回收效率用于指示所述终端当前启用的所述回收线程对所述运行内存的回收速度;
所述第二数量获取模块,用于根据所述回收效率以及所述性能参数,获取第二线程数量,所述第二线程数量是所述终端当前启用的所述回收线程的最少数量;
所述第一线程启用模块,用于当所述第二线程数量不大于所述第一线程数量时,启用与所述第二线程数量相同数量的所述回收线程。
可选的,所述装置还包括:目标数量获取模块,第二线程创建模块以及第二线程启用模块;
所述目标数量获取模块,用于当所述第二线程数量大于所述第一线程数量时,获取目标数量,所述目标数量是所述第一线程数量与所述第二线程数量差值的绝对值;
所述第二线程创建模块,用于创建与所述目标数量相同的所述回收线程;
所述第二线程启用模块,用于启用所述目标数量的所述回收线程。
可选的,所述装置还包括:
线程关闭模块,用于当所述应用程序停止运行时,关闭所述目标数量的所述回收线程。
请参考图5,其示出了本申请一个示例性实施例提供的终端的结构示意图,如图5所示,该终端包括处理器510、存储器520、显示组件530和传感器组件540,显示组件530用于显示终端中前台运行的应用程序的界面,传感器组件540用于采集各个传感器数据。所述存储器520中存储有至少一条指令,所述指令由所述处理器510加载并执行以实现如上各个实施例所述的回收线程创建方法中,由终端执行的部分或者全部步骤。
本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的回收线程创建方法中,由终端执行的全部或部分步骤。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的回收线程创建方法,由终端执行的全部或部分步骤。
需要说明的是:上述实施例提供的回收线程创建方法在执行终端触发回收线程创建时,仅以上述各实施例进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种回收线程创建方法,其特征在于,所述方法由终端执行,所述方法包括:
获取所述终端的性能参数;所述性能参数是所述终端的中央处理器CPU核数以及运行内存的剩余量中的至少一种;
根据所述性能参数,获取第一线程数量;
创建与所述第一线程数量相同的回收线程,所述回收线程用于回收所述终端中占用所述运行内存的资源;
在所述终端的前台运行应用程序时,基于所述运行内存的回收效率,从创建的所述回收线程中选择回收线程进行所述运行内存的回收,所述回收效率用于指示所述终端当前启用的所述回收线程对所述运行内存的回收速度。
2.根据权利要求1所述的方法,其特征在于,所述根据所述性能参数,获取第一线程数量,包括:
根据所述性能参数与所述第一线程数量之间的对应关系,获取与所述性能参数对应的所述第一线程数量;或者,
根据所述性能参数计算所述第一线程数量,获取与所述性能参数对应的所述第一线程数量。
3.根据权利要求1所述的方法,其特征在于,所述获取所述终端的性能参数,包括:
在所述终端启动时,获取所述终端的性能参数;或者,
在所述终端的前台运行应用程序时,获取所述终端的性能参数。
4.根据权利要求1至3任一所述的方法,其特征在于,所述在所述终端的前台运行应用程序时,基于所述运行内存的回收效率,从已创建的所述回收线程中选择回收线程进行所述运行内存的回收,包括:
在所述终端的前台运行应用程序时,获取所述运行内存的所述回收效率;
根据所述回收效率以及所述性能参数,获取第二线程数量,所述第二线程数量是所述终端当前启用的所述回收线程的最少需求数量;
当所述第二线程数量不大于所述第一线程数量时,启用与所述第二线程数量相同数量的所述回收线程。
5.根据权利要求4所述的方法,其特征在于,当所述第二线程数量大于所述第一线程数量时,所述方法还包括:
获取目标数量,所述目标数量是所述第一线程数量与所述第二线程数量差值的绝对值;
创建与所述目标数量相同的所述回收线程;
启用所述目标数量的所述回收线程。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当所述应用程序停止运行时,关闭所述目标数量的所述回收线程。
7.一种回收线程创建装置,其特征在于,所述装置用于终端中,所述装置包括:
参数获取模块,用于获取所述终端的性能参数;所述性能参数是所述终端的中央处理器CPU核数以及运行内存的剩余量中的至少一种;
数量获取模块,用于根据所述性能参数,获取第一线程数量;
线程创建模块,用于创建与所述第一线程数量相同的回收线程,所述回收线程用于回收所述终端中占用所述运行内存的资源;
用于在所述终端的前台运行应用程序时,基于所述运行内存的回收效率,从创建的所述回收线程中选择回收线程进行所述运行内存的回收,所述回收效率用于指示所述终端当前启用的所述回收线程对所述运行内存的回收速度的功能模块。
8.根据权利要求7所述的装置,其特征在于,所述数量获取模块,包括:第一获取单元以及第二获取单元;
所述第一获取单元,用于根据所述性能参数与所述第一线程数量之间的对应关系,获取与所述性能参数对应的所述第一线程数量;
所述第二获取单元,用于根据所述性能参数计算所述第一线程数量,获取与所述性能参数对应的所述第一线程数量。
9.一种计算机设备,其特征在于,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段应用程序、代码集或指令集,所述至少一条指令、所述至少一段应用程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至6任一所述的回收线程创建方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段应用程序、代码集或指令集,所述至少一条指令、所述至少一段应用程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至6任一所述的回收线程创建方法。
CN201910903605.4A 2019-09-24 2019-09-24 回收线程创建方法、装置、计算机设备以及存储介质 Active CN110673956B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910903605.4A CN110673956B (zh) 2019-09-24 2019-09-24 回收线程创建方法、装置、计算机设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910903605.4A CN110673956B (zh) 2019-09-24 2019-09-24 回收线程创建方法、装置、计算机设备以及存储介质

Publications (2)

Publication Number Publication Date
CN110673956A CN110673956A (zh) 2020-01-10
CN110673956B true CN110673956B (zh) 2022-04-15

Family

ID=69078581

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910903605.4A Active CN110673956B (zh) 2019-09-24 2019-09-24 回收线程创建方法、装置、计算机设备以及存储介质

Country Status (1)

Country Link
CN (1) CN110673956B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111464331B (zh) * 2020-03-03 2023-03-24 深圳市计通智能技术有限公司 一种线程创建的控制方法、系统及终端设备
CN114253737B (zh) * 2022-02-28 2022-07-19 荣耀终端有限公司 电子设备及其内存回收方法、介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7512745B2 (en) * 2006-04-28 2009-03-31 International Business Machines Corporation Method for garbage collection in heterogeneous multiprocessor systems
CN100487660C (zh) * 2007-05-28 2009-05-13 中兴通讯股份有限公司 一种多线程处理器动态内存管理系统及方法
US9223578B2 (en) * 2009-09-25 2015-12-29 Nvidia Corporation Coalescing memory barrier operations across multiple parallel threads
JP6011329B2 (ja) * 2012-12-28 2016-10-19 日本電気株式会社 プログラム生成装置、プログラム生成方法、および、コンピュータ・プログラム
CN103699435B (zh) * 2013-12-25 2017-05-03 龙芯中科技术有限公司 负载均衡方法及装置
CN106201904B (zh) * 2016-06-30 2019-03-26 网易(杭州)网络有限公司 用于内存垃圾回收的方法及装置
CN107315645B (zh) * 2017-06-30 2020-09-15 苏州浪潮智能科技有限公司 一种cpu核配置方法及装置
CN110018901B (zh) * 2018-01-10 2021-08-03 Oppo广东移动通信有限公司 内存回收方法、装置、计算机设备和计算机可读存储介质
CN109558244A (zh) * 2018-12-03 2019-04-02 郑州云海信息技术有限公司 垃圾信息回收方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN110673956A (zh) 2020-01-10

Similar Documents

Publication Publication Date Title
US10990540B2 (en) Memory management method and apparatus
CN102841674B (zh) 基于新型存储器的嵌入式系统及其进程的休眠与唤醒方法
CN103207797B (zh) 基于通用可扩展固件接口固件系统的胶囊式定制更新方法
KR102490908B1 (ko) 자원 스케줄링 방법 및 단말 장치
CN110502340A (zh) 一种资源动态调整方法、装置、设备及存储介质
CN102866934B (zh) 基于非易失随机存储器的嵌入式设备的休眠及唤醒系统
CN110673956B (zh) 回收线程创建方法、装置、计算机设备以及存储介质
CN100365576C (zh) 嵌入式操作系统内存镜像启动优化的实现方法
US10942844B2 (en) Reserved memory in memory management system
CN109168088A (zh) 一种智能电视系统的启动方法、装置及智能电视
CN102467404A (zh) 一种基于物理内存实现软件快速切换的方法及装置
CN103902575A (zh) 一种图片信息加载方法及相关装置
CN103197934A (zh) 多媒体装置的启动方法及多媒体装置
CN102693144A (zh) 一种Android移动终端的电容屏固件升级的方法
CN104424122A (zh) 一种电子设备及内存划分方法
WO2020093868A1 (zh) 多核芯片、系统,及其方法和存储介质
CN103513956A (zh) 一种处理器处理数据的方法以及装置
CN111694402A (zh) 单芯片异构系统的控制方法和可穿戴设备
CN109683983B (zh) 一种镜像文件的生成及加载方法、设备
CN103019833A (zh) 终端设备以及使终端设备支持操作系统快速切换的方法
CN103729166A (zh) 程序的线程关系确定方法、设备及系统
CN104866388A (zh) 数据处理方法及装置
CN113434087A (zh) 基于共享空间的多核启动方法
CN104808953A (zh) 控制数据存储的方法、装置及移动终端
CN110324714A (zh) 电视机及其电视控制方法、控制装置和可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant