CN111190727B - 内存的异步析构方法、装置、计算机设备及存储介质 - Google Patents

内存的异步析构方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN111190727B
CN111190727B CN201911133865.4A CN201911133865A CN111190727B CN 111190727 B CN111190727 B CN 111190727B CN 201911133865 A CN201911133865 A CN 201911133865A CN 111190727 B CN111190727 B CN 111190727B
Authority
CN
China
Prior art keywords
processing result
logic
memory
client
media content
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
CN201911133865.4A
Other languages
English (en)
Other versions
CN111190727A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201911133865.4A priority Critical patent/CN111190727B/zh
Publication of CN111190727A publication Critical patent/CN111190727A/zh
Application granted granted Critical
Publication of CN111190727B publication Critical patent/CN111190727B/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/5016Allocation 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 the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Abstract

本发明涉及内存的异步析构方法、装置、计算机设备及存储介质,属于网络技术领域。该方法包括:获取对象处理结果;所述对象处理结果为对大对象执行业务处理逻辑后得到的处理结果;所述业务处理逻辑根据客户端发送的业务逻辑执行请求执行;将所述对象处理结果添加至异步线程队列,以使所述异步线程队列将所述对象处理结果返回至所述客户端;确定与所述对象处理结果对应的目标内存;通过预先生成的异步线程对所述目标内存进行析构处理。上述技术方案,解决了客户端无法及时获取到处理结果的问题。客户端不需要等待目标内存清理完,就能及时接收到对象处理结果。

Description

内存的异步析构方法、装置、计算机设备及存储介质
技术领域
本发明涉及网络技术领域,特别是涉及内存的异步析构方法、装置、计算机设备及存储介质。
背景技术
随着网络技术的发展,计算机设备之间的交互越来越普遍。为了提高处理效率,目前,常将特定的业务功能集中到服务器上执行,客户端通过向服务器发送请求来获取对象处理结果。服务器往往是释放内存空间后把对象处理结果返回给客户端。
在实现本发明过程中,发明人发现传统方式中至少存在如下问题:目前涉及到许多需要对大数据进行分析的场景,这些场景中往往会产生占用较大内存的数据,如果使用上述内存的释放方法,内存清理的过程会非常耗时,使得客户端无法及时获取到处理结果。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
基于此,本发明实施例提供了内存的异步析构方法、装置、计算机设备及存储介质,能在向客户端返回处理结果后清理内存空间,保证客户端及时获取到对象处理结果。
本发明实施例的内容如下:
第一方面,本发明实施例提供一种内存的异步析构方法,包括以下步骤:获取对象处理结果;所述对象处理结果为对大对象执行业务处理逻辑后得到的处理结果;所述业务处理逻辑根据客户端发送的业务逻辑执行请求执行;将所述对象处理结果添加至异步线程队列,以使所述异步线程队列将所述对象处理结果返回至所述客户端;确定与所述对象处理结果对应的目标内存;通过预先生成的异步线程对所述目标内存进行析构处理。
第二方面,本发明实施例提供一种内存的异步析构装置,包括:结果获取模块,用于获取对象处理结果;所述对象处理结果为对大对象执行业务处理逻辑后得到的处理结果;所述业务处理逻辑根据客户端发送的业务逻辑执行请求执行;队列添加模块,用于将所述对象处理结果添加至异步线程队列,以使所述异步线程队列将所述对象处理结果返回至所述客户端;内存确定模块,用于确定与所述对象处理结果对应的目标内存;内存清理模块,用于通过预先生成的异步线程对所述目标内存进行析构处理。
第三方面,本发明实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:获取对象处理结果;所述对象处理结果为对大对象执行业务处理逻辑后得到的处理结果;所述业务处理逻辑根据客户端发送的业务逻辑执行请求执行;将所述对象处理结果添加至异步线程队列,以使所述异步线程队列将所述对象处理结果返回至所述客户端;确定与所述对象处理结果对应的目标内存;通过预先生成的异步线程对所述目标内存进行析构处理。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:获取对象处理结果;所述对象处理结果为对大对象执行业务处理逻辑后得到的处理结果;所述业务处理逻辑根据客户端发送的业务逻辑执行请求执行;将所述对象处理结果添加至异步线程队列,以使所述异步线程队列将所述对象处理结果返回至所述客户端;确定与所述对象处理结果对应的目标内存;通过预先生成的异步线程对所述目标内存进行析构处理。
上述技术方案中的一个技术方案具有如下优点或有益效果:在获取到对象处理结果之后,先将对象处理结果通过异步线程队列返回至对应的客户端,再清理对象处理结果对应的目标内存。客户端不需要等待目标内存清理完,就能及时接收到对象处理结果。
附图说明
图1为一个实施例中内存的异步析构方法的应用环境图;
图2为一个实施例中内存的异步析构方法的流程示意图;
图3为另一个实施例中内存的异步析构方法的流程示意图;
图4为一个实施例中获取推荐文章的界面示意图;
图5为再一个实施例中内存的异步析构方法的流程示意图;
图6为又一个实施例中内存的异步析构方法的流程示意图;
图7为一个实施例中内存的异步析构装置的结构框图;
图8为一个实施例中计算机设备的内部结构。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请提供的内存的异步析构方法可以应用于如图1所示的应用环境中。该应用环境包括服务器101(给用户提供计算服务的计算机设备)和客户端102,两者通过网络连接。其中,客户端102向服务器发送业务逻辑执行请求,服务器根据该业务逻辑请求执行业务处理逻辑以得到对象处理结果,将对象处理结果返回给客户端102后再进行内存的异步析构。进一步的,服务器101可以用独立的服务器或者是多个服务器组成的服务器集群来实现,客户端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。在某些实施例中,服务器101也可以替换为终端设备,只要能执行大数据运算逻辑即可。需要说明的是,服务器101所连接的客户端102的数量可以一个、两个甚至多个(图1中仅示出了一个的情况)。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本发明实施例提供一种内存的异步析构方法、装置、计算机设备及存储介质。以下分别进行详细说明。
在一个实施例中,如图2所示,提供了一种内存的异步析构方法(以该方法应用于图1中的服务器端为例进行说明),包括以下步骤:
S201、获取对象处理结果;所述对象处理结果为对大对象执行业务处理逻辑后得到的处理结果;所述业务处理逻辑根据客户端发送的业务逻辑执行请求执行。
在本步骤中,客户端向服务器发送业务逻辑执行请求,服务器在接收到业务逻辑执行请求之后,对大对象执行业务处理逻辑,得到对象处理结果。
其中,客户端可以指具体的计算机设备,如:个人计算机、笔记本电脑、智能手机、平板电脑、便携式可穿戴设备等,也可以指计算机设备上安装的应用程序等。用户通过客户端向服务器发送业务逻辑执行请求,以获取对应的对象处理结果。
其中,业务逻辑执行请求可以是各种类型的网络媒体执行请求,例如:数值运算请求、信息查询请求、数据读取请求、视频输出请求等。业务处理逻辑可以是网络媒体上的各种大数据处理逻辑,例如:数值运算、信息查询、数据读取、视频输出等逻辑。大对象(即大数据对象)指的是业务处理逻辑所针对的对象,例如:内存中的数据等,具体的,这个数据可以是文本、图像、视频等。在服务器对大对象执行业务处理逻辑之前,可以开辟一个内存空间(即目标内存),用于存储对象处理结果以及业务处理逻辑执行过程中涉及到的各种数据。更进一步地,不同业务处理逻辑所得到的对象处理结果也不同,对象处理结果可以是数值运算结果、所查询的信息、所读取的数据、所获取的视频等。另外,对象处理结果也可以为大对象,因此,在本发明的某些实施例中,通过异步线程对目标内存中的大对象进行处理。
另一方面,执行业务处理逻辑还可以由服务器之外的其他计算机设备来完成,例如,可以为客户端。在客户端(与发送业务逻辑执行请求的客户端可以不同)得到对象处理结果执行,服务器从该客户端中获取对象处理结果,可以主动访问客户端以获取对象处理结果,也可以被动接收客户端发送的对象处理结果。
S202、将所述对象处理结果添加至异步线程队列,以使所述异步线程队列将所述对象处理结果返回至所述客户端。
在本步骤中,服务器将对象处理结果添加至异步线程队列中,由异步线程队列将对象处理结果返回给发送业务逻辑执行请求的客户端。
其中,异步线程队列指的是通过异步线程的方式在客户端和服务器之间进行数据传输的队列。其中,异步线程指的是主线程之外的线程,在本发明实施例中,主线程可以指执行业务处理逻辑并生成对象处理结果对应的线程。
进一步的,在获取到对象处理结果后,异步线程队列可以立即将对象处理结果发送给客户端;也可以判断队列中的数据是否满足发送条件(例如:数据量大于设定数据量阈值,对象处理结果的个数大于设定个数阈值),在满足该发送条件时再发送对象处理结果。
S203、确定与所述对象处理结果对应的目标内存。
其中,服务器在接收到业务逻辑执行请求时,可以确定对象处理结果所对应的内存空间地址,根据该内存空间地址就能确定目标内存。
在一些实施例中S203也可以在S202步骤之前执行。
S204、通过预先生成的异步线程对所述目标内存进行析构处理。
本步骤中通过异步线程清理目标内存,既能及时清理目标内存中间,又不妨碍其主线程的正常运行。
进一步地,异步线程可以对目标内存进行释放或者删除其中存储的数据,以完成内存的异步析构任务,具体可以通过析构函数或者delete语句来完成目标内存的异步析构。在异步线程清理完目标内存后,可以向服务器返回内存已清理完成的信息。
更进一步的,所述通过预先生成的异步线程对所述目标内存进行析构处理的步骤之后,还包括:对进行析构处理后的目标内存进行回收处理。经过回收处理的目标内存还可以用于存储其他的数据。
本实施例提供的内存的异步析构方法,客户端不需要等待目标内存清理完,就能及时接收到对象处理结果,同时有效降低服务器的处理耗时。
在一个实施例中,如图3所示,服务器在启动之后,可以生成输入输出线程(IO线程)、工作线程(worker线程)以及异步线程。其中,IO线程用于接收客户端发送的业务逻辑执行请求,工作线程用于执行业务处理逻辑(即完成具体的业务),异步线程用于清理内存空间。在生成这些线程之后,服务器可以等待客户端发送业务逻辑执行请求,当然,也可以在生成IO线程之后就等待客户端发送业务逻辑执行请求。需要说明的是,图3中示出了服务器生成不同类型线程的顺序,但在实际的应用场景中,生成这些线程的顺序可以调整,甚至可以是没有固定顺序,而是根据实际情况在需要生成某个线程时就生成对应的线程,例如:先生成IO线程,等待客户端发送业务逻辑执行请求,如果接收到客户端发送的业务逻辑执行请求,就生成工作线程,通过该工作线程执行对应的业务处理逻辑,得到对象处理结果之后将对象处理结果返回给客户端,生成异步线程,通过该异步线程清理目标内存。
服务器可以根据预先确定的线程编写规则自动编写上述线程,也可以由服务器调用其他计算机设备编辑好的线程,还可以由用户直接在服务器中编写对应的线程。
上述实施例提供的内存的异步析构方法,服务器在接收业务逻辑执行请求之前,先生成需要的线程,能在执行业务处理逻辑时直接使用对应的线程,能快速完成业务处理逻辑的执行过程以及数据返回过程,保证客户端业务逻辑执行请求的即时响应以及结果的及时接收,提高客户端与服务器之间的交互效率。
进一步地,在一个实施例中,所述通过预先生成的异步线程对所述目标内存进行析构处理的步骤,包括:通过所述预先生成的异步线程,调用析构函数;通过所调用的析构函数,对所述目标内存中的所述对象处理结果进行析构处理。
在网络技术领域,析构函数往往用来做“清理善后”的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存)。因此,本发明实施例中,当大对象在代码的作用域内执行完毕并离开作用域(如函数)后,会调用对象的析构函数做内存清理以及回收工作,实现过程简单,能有效提高服务器清理内存空间的效率,有效减少服务器的处理耗时。
在一个实施例中,所述接收客户端发送的业务逻辑执行请求的步骤,包括:通过预先生成的IO线程,接收客户端发送的业务逻辑执行请求。
在客户端为两个或多个时,可以分别为这些客户端生成IO线程。客户端通过对应的IO线程来与服务器进行交互。这样,服务器在接收到客户端的业务逻辑处理请求时,根据IO线程就能获知对应的是哪个客户端。
上述实施例通过预先生成的IO线程来接收客户端发送的业务逻辑执行请求,能有效提高客户端和服务器之间的通信效率,保证业务逻辑处理请求的即时响应。
更进一步地,异步线程队列可以通过预先生成的IO线程将对象处理结果返回给对应的客户端。
在一个实施例中,所述获取对象处理结果的步骤之前,还包括:通过预先生成的工作线程,对所述对应的大对象执行对应的业务处理逻辑,得到所述对象处理结果。
在所连接的客户端为两个或多个时,服务器可以分别启动不同的工作线程来执行这些客户端对应的业务处理逻辑,也可以由一个工作线程按照一定的顺序(这个顺序可以是客户端发送业务逻辑执行请求的时间顺序)逐步执行各个客户端对应的业务处理逻辑。
上述实施例,在接收到业务逻辑执行请求后,能通过预先生成的工作线程快速执行业务处理逻辑,有效提高对象处理结果的获取效率,进而保证客户端在尽可能短的时间内接收到对象处理结果。
在一个实施例中,所述获取对象处理结果的步骤,包括:接收客户端发送的业务逻辑执行请求;确定与所述业务逻辑执行请求对应的大对象;对所述对应的大对象执行对应的业务处理逻辑,得到所述对象处理结果。
在本实施例中,服务器接收客户端的业务逻辑执行请求后,确定与所述业务逻辑执行请求对应的大对象;并对所述对应的大对象执行对应的业务处理逻辑,得到所述对象处理结果。能根据客户端发送的请求针对性地进行业务处理,得到客户端想要的对象处理结果。
进一步地,所述业务逻辑执行请求包括媒体内容推荐请求,所述大对象包括候选媒体内容,业务处理逻辑包括媒体内容推荐逻辑;所述确定与所述业务逻辑执行请求对应的大对象;对所述对应的大对象执行对应的业务处理逻辑,得到所述对象处理结果的步骤,包括:确定与所述媒体内容推荐请求对应的候选媒体内容和媒体内容推荐逻辑;根据所述媒体内容推荐逻辑,从所述候选媒体内容中确定目标媒体内容;将所述目标媒体内容,确定为所述对象处理结果。
其中,媒体内容可以指网络媒体上的各种内容,可以是网络咨询、文章、视频、好友信息等等。
更进一步地,以进行文章推荐为例,得到对象处理结果的过程具体可以为:用户A通过如图4(a)所示的界面点击客户端上“获取推荐文章”的控件,此时客户端向所连接的服务器发送文章推荐请求;服务器在接收到文章推荐请求后确定对应的大对象为文章池(即候选媒体内容),进而从文章池中提取特定数量的文章(这个数量可以根据实际情况确定,例如:20篇、50篇、100篇等),将所提取的文章暂存在开辟的内存空间中,并将所提取的文章作为推荐文章输出给客户端;此时客户端通过如图4(b)所示的界面显示接收到的推荐文章。之后,服务器通过异步线程释放该内存空间。通过上述过程,通过简单的客户端点击操作,用户就能快速获知自己想要的信息,能有效提高用户A的使用体验。
在一些实施例中,可以将内存的异步析构方法应用在微信看一看服务器中,用户点击微信-发现-看一看,客户端(配置在终端设备上)请求服务器拉取推荐内容,服务器通过计算返回内容给客户端,之后对计算过程中产生的大对象进行异步析构回收内存。
进一步地,服务器在提取推荐文章时,可以根据用户A的好友的推荐信息来确定推荐文章,例如,用户A的好友B推荐了文章P,则可以将文章P作为推荐文章输出给用户A。当然,服务器也可以通过其他的方式来提取推荐文章,例如,根据文章池中各个文章的热度(可以根据文章被点击的频次等确定),将热度更高的文章作为推荐文章输出给用户A。
在一些实施例中,服务器也可以确定对象处理结果在目标内存中占用的空间大小,当所占用的空间较少且清理时间很短(具体时间可以根据实际情况确定,例如:小于5ms)时,则可以先清理目标内存,再通过异步线程队列将对象处理结果返回给客户端。这种方式能同时兼顾服务器的处理效率和客户端接收对象处理结果的效率。
在一个实施例中,异步线程队列除了将对象处理结果返回给发送业务逻辑执行请求的客户端,也可以将对象处理结果返回给其他想要获取对应对象处理结果的客户端,这样,服务器就不需要多次执行业务处理逻辑了,进而可以空出线程去执行其他任务,有效减轻服务器的执行压力。
在一个实施例中,如图5所示,提供一种内存的异步析构方法,以该方法应用在图1中的服务器端为例,包括以下步骤:
S501、通过预先生成的输入输出线程,接收客户端发送的业务逻辑执行请求。
S502、确定与所述业务逻辑执行请求对应的大对象。
S503、通过预先生成的工作线程,对所述对应的大对象执行对应的业务处理逻辑,得到所述对象处理结果。
S504、将所述对象处理结果添加至异步线程队列,以使所述异步线程队列将所述对象处理结果返回至所述客户端。
S505、确定与所述对象处理结果对应的目标内存。
S506、通过预先生成的异步线程,调用析构函数。
S507、通过所调用的析构函数,对所述目标内存中的所述对象处理结果进行析构处理。
本实施例提供的内存的异步析构方法,客户端不需要等待目标内存清理完,就能及时接收到对象处理结果。
在一个实施例中,如图6所示,为了更好地理解上述方法,以下详细阐述一个本发明内存的异步析构方法的应用实例,以下以该应用实例应用在服务器端为例进行说明,包括以下步骤:
S601、接收业务逻辑执行请求。
S602、通过工作线程对业务逻辑执行请求进行针对性处理,得到对象处理结果。
S603、将对象处理结果放入异步线程队列。
S604、异步线程队列将对象处理结果返回给对应的客户端。
S605、异步线程从异步线程队列中获取对象处理结果,根据该对象处理结果调用析构函数,以控制该析构函数对对应的目标内存进行资源释放。
在当前通用的服务器处理技术中,服务器接受到请求后进行计算处理,处理完成后对使用的大对象进行析构释放内存,把处理结果返回给请求方。如果在计算处理的过程产生了占用大内存的数据对象,则在调用析构函数做内存清理的过程会非常耗时,600K数据的析构需要20ms,这就使得请求方需要等待很长时间才能获取到处理结果。而上述实施例提供的内存的异步析构方法,服务器处理完计算逻辑后,将处理过程的大对象放入异步线程队列后快速返回,无需等待对象析构,当前请求处理的大对象交由异步线程进行析构回收内存处理,客户端不需要等待目标内存清理完,就能及时接收到对象处理结果。
需要说明的是,对于前述的各方法实施例,为了简便描述,将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。
基于与上述实施例中的内存的异步析构方法相同的思想,本发明还提供内存的异步析构装置,上述内存的异步析构装置可用于执行上述内存的异步析构方法。为了便于说明,内存的异步析构装置实施例的结构示意图中,仅仅示出了与本发明实施例相关的部分,本领域技术人员可以理解,图示结构并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
在一个实施例中,如图7所示,提供一种内存的异步析构装置700,包括结果获取模块701、队列添加模块702、内存确定模块703和内存清理模块704,详细说明如下:
结果获取模块701,用于获取对象处理结果;所述对象处理结果为对大对象执行业务处理逻辑后得到的处理结果;所述业务处理逻辑根据客户端发送的业务逻辑执行请求执行。
队列添加模块702,用于将所述对象处理结果添加至异步线程队列,以使所述异步线程队列将所述对象处理结果返回至所述客户端。
内存确定模块703,用于确定与所述对象处理结果对应的目标内存。
内存清理模块704,用于通过预先生成的异步线程对所述目标内存进行析构处理。
本实施例提供的内存的异步析构装置,客户端不需要等待目标内存清理完,就能及时接收到对象处理结果。
在一个实施例中,内存清理模块704,包括:函数调用子模块,用于通过所述预先生成的异步线程,调用析构函数;内存清理子模块,用于通过所调用的析构函数,对所述目标内存中的所述对象处理结果进行析构处理。
在一个实施例中,结果获取模块701,包括:请求接收子模块,用于接收客户端发送的业务逻辑执行请求;对象确定子模块,用于确定与所述业务逻辑执行请求对应的大对象;逻辑执行子模块,用于对所述对应的大对象执行对应的业务处理逻辑,得到所述对象处理结果。
在一个实施例中,请求接收子模块,还用于通过预先生成的IO线程,接收客户端发送的业务逻辑执行请求。
在一个实施例中,还包括:业务逻辑执行模块,用于通过预先生成的工作线程,对所述对应的大对象执行对应的业务处理逻辑,得到所述对象处理结果。
在一个实施例中,所述业务逻辑执行请求包括媒体内容推荐请求,所述大对象包括候选媒体内容,业务处理逻辑包括媒体内容推荐逻辑;内存的异步析构装置700,还包括:请求对应信息确定模块,用于确定与所述媒体内容推荐请求对应的候选媒体内容和媒体内容推荐逻辑;媒体内容确定模块,用于根据所述媒体内容推荐逻辑,从所述候选媒体内容中确定目标媒体内容;处理结果确定模块,用于将所述目标媒体内容,确定为所述对象处理结果。
在一个实施例中,还包括:回收模块,用于对进行析构处理后的目标内存进行回收处理。
需要说明的是,本发明的内存的异步析构装置与本发明的内存的异步析构方法一一对应,在上述内存的异步析构方法的实施例阐述的技术特征及其有益效果均适用于内存的异步析构装置的实施例中,具体内容可参见本发明方法实施例中的叙述,此处不再赘述,特此声明。
此外,上述示例的内存的异步析构装置的实施方式中,各程序模块的逻辑划分仅是举例说明,实际应用中可以根据需要,例如出于相应硬件的配置要求或者软件的实现的便利考虑,将上述功能分配由不同的程序模块完成,即将所述内存的异步析构装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分功能。
本申请提供的内存的异步析构方法可以应用于如图8所示的计算机设备中。该计算机设备具体可以是图1中的服务器101。如图8所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现内存的异步析构方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行内存的异步析构方法。网络接口用于与外部的终端通过网络连接通信,例如,与客户端通信,用于接收客户端发送的业务逻辑执行请求。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的内存的异步析构装置可以实现为一种计算机程序的形式,计算机程序可在如图8所示的计算机设备上运行。计算机设备的存储器中可存储组成该内存的异步析构装置的各个程序模块,比如,图8所示的结果获取模块701、队列添加模块702、内存确定模块703和内存清理模块704。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的内存的异步析构方法中的步骤。
例如,图8所示的计算机设备可以通过如图7所示的内存的异步析构装置中的结果获取模块701执行S201,可通过队列添加模块702执行S202,可通过内存确定模块703执行S203,可通过内存清理模块704执行S204。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述内存的异步析构方法的步骤。此处内存的异步析构方法的步骤可以是上述各个实施例的内存的异步析构方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述内存的异步析构方法的步骤。此处内存的异步析构方法的步骤可以是上述各个实施例的内存的异步析构方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (14)

1.一种内存的异步析构方法,其特征在于,包括:
获取对象处理结果;所述对象处理结果为对大对象执行业务处理逻辑后得到的处理结果;所述业务处理逻辑根据客户端发送的业务逻辑执行请求执行;
将所述对象处理结果添加至异步线程队列,以使所述异步线程队列将所述对象处理结果返回至所述客户端;所述异步线程队列,是通过异步线程的方式在客户端和服务器之间进行数据传输的队列;所述异步线程,是执行所述业务处理逻辑并生成所述对象处理结果对应的线程之外的线程;
确定与所述对象处理结果对应的目标内存;
当所述大对象在所述业务处理逻辑的作用域内执行完毕并离开所述作用域后,通过预先生成的异步线程,调用析构函数,通过所调用的析构函数对所述目标内存进行析构处理。
2.根据权利要求1所述的方法,其特征在于,所述获取对象处理结果的步骤,包括:
接收客户端发送的业务逻辑执行请求;
确定与所述业务逻辑执行请求对应的大对象;
对所述对应的大对象执行对应的业务处理逻辑,得到所述对象处理结果。
3.根据权利要求2所述的方法,其特征在于,所述接收客户端发送的业务逻辑执行请求的步骤,包括:
通过预先生成的输入输出线程,接收客户端发送的业务逻辑执行请求。
4.根据权利要求1所述的方法,其特征在于,所述获取对象处理结果的步骤之前,还包括:
通过预先生成的工作线程,对所述对应的大对象执行对应的业务处理逻辑,得到所述对象处理结果。
5.根据权利要求2所述的方法,其特征在于,所述业务逻辑执行请求包括媒体内容推荐请求,所述大对象包括候选媒体内容,业务处理逻辑包括媒体内容推荐逻辑;
所述确定与所述业务逻辑执行请求对应的大对象;对所述对应的大对象执行对应的业务处理逻辑,得到所述对象处理结果的步骤,包括:
确定与所述媒体内容推荐请求对应的候选媒体内容和媒体内容推荐逻辑;
根据所述媒体内容推荐逻辑,从所述候选媒体内容中确定目标媒体内容;
将所述目标媒体内容,确定为所述对象处理结果。
6.根据权利要求1所述的方法,其特征在于,所述通过预先生成的异步线程对所述目标内存进行析构处理的步骤之后,还包括:
对进行析构处理后的目标内存进行回收处理。
7.一种内存的异步析构装置,其特征在于,包括:
结果获取模块,用于获取对象处理结果;所述对象处理结果为对大对象执行业务处理逻辑后得到的处理结果;所述业务处理逻辑根据客户端发送的业务逻辑执行请求执行;
队列添加模块,用于将所述对象处理结果添加至异步线程队列,以使所述异步线程队列将所述对象处理结果返回至所述客户端;所述异步线程队列,是通过异步线程的方式在客户端和服务器之间进行数据传输的队列;所述异步线程,是执行所述业务处理逻辑并生成所述对象处理结果对应的线程之外的线程;
内存确定模块,用于确定与所述对象处理结果对应的目标内存;
内存清理模块,用于当所述大对象在所述业务处理逻辑的作用域内执行完毕并离开所述作用域后,通过预先生成的异步线程,调用析构函数;通过所调用的析构函数对所述目标内存进行析构处理。
8.根据权利要求7所述的装置,其特征在于,所述结果获取模块包括:
请求接收子模块,用于接收客户端发送的业务逻辑执行请求;
对象确定子模块,用于确定与所述业务逻辑执行请求对应的大对象;
逻辑执行子模块,用于对所述对应的大对象执行对应的业务处理逻辑,得到所述对象处理结果。
9.根据权利要求8所述的装置,其特征在于,所述请求接收子模块还用于通过预先生成的输入输出线程,接收客户端发送的业务逻辑执行请求。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
业务逻辑执行模块,用于通过预先生成的工作线程,对所述对应的大对象执行对应的业务处理逻辑,得到所述对象处理结果。
11.根据权利要求8所述的装置,其特征在于,所述业务逻辑执行请求包括媒体内容推荐请求,所述大对象包括候选媒体内容,业务处理逻辑包括媒体内容推荐逻辑;所述装置还包括:
请求对应信息确定模块,用于确定与所述媒体内容推荐请求对应的候选媒体内容和媒体内容推荐逻辑;
媒体内容确定模块,用于根据所述媒体内容推荐逻辑,从所述候选媒体内容中确定目标媒体内容;
处理结果确定模块,用于将所述目标媒体内容,确定为所述对象处理结果。
12.根据权利要求7所述的装置,其特征在于,所述装置还包括:
回收模块,用于对进行析构处理后的目标内存进行回收处理。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一项所述的方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6任一项所述的方法的步骤。
CN201911133865.4A 2019-11-19 2019-11-19 内存的异步析构方法、装置、计算机设备及存储介质 Active CN111190727B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911133865.4A CN111190727B (zh) 2019-11-19 2019-11-19 内存的异步析构方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911133865.4A CN111190727B (zh) 2019-11-19 2019-11-19 内存的异步析构方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN111190727A CN111190727A (zh) 2020-05-22
CN111190727B true CN111190727B (zh) 2023-06-09

Family

ID=70710882

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911133865.4A Active CN111190727B (zh) 2019-11-19 2019-11-19 内存的异步析构方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN111190727B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111859205A (zh) * 2020-07-14 2020-10-30 上海悦易网络信息技术有限公司 一种用于批量处理任务的解析方法及设备
CN111858002B (zh) * 2020-07-16 2022-12-23 苏州浪潮智能科技有限公司 一种基于异步io的并发处理方法、系统及装置
CN112487034A (zh) * 2020-12-01 2021-03-12 上海思客琦智能装备科技股份有限公司 双队列异步图像处理方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104793999A (zh) * 2014-01-21 2015-07-22 航天信息股份有限公司 伺服服务器架构系统
CN108370346A (zh) * 2015-10-09 2018-08-03 萨托里环球有限责任公司 用于存储和传送消息数据的系统和方法
CN108965450A (zh) * 2018-07-27 2018-12-07 江西贪玩信息技术有限公司 业务请求响应方法、装置、计算机设备和存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6421715B1 (en) * 1997-06-11 2002-07-16 Oracle Corporation System and method for generating and transmitting a command in response to a request for additional data and data described in the request
US20040139125A1 (en) * 2001-06-05 2004-07-15 Roger Strassburg Snapshot copy of data volume during data access
US7593968B2 (en) * 2001-06-05 2009-09-22 Silicon Graphics, Inc. Recovery and relocation of a distributed name service in a cluster filesystem
JP4958481B2 (ja) * 2006-06-01 2012-06-20 キヤノン株式会社 Webサービス実行方法及び情報処理装置
CN107018091B (zh) * 2016-02-29 2021-04-27 阿里巴巴集团控股有限公司 资源请求的调度方法和装置
CN107341154A (zh) * 2016-04-29 2017-11-10 北京京东尚科信息技术有限公司 一种数据导出的方法和装置
CN106599152A (zh) * 2016-12-07 2017-04-26 北京华夏电通科技有限公司 一种数据缓存方法及系统
CN109614237A (zh) * 2018-12-10 2019-04-12 浪潮(北京)电子信息产业有限公司 一种资源释放方法、装置、设备及介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104793999A (zh) * 2014-01-21 2015-07-22 航天信息股份有限公司 伺服服务器架构系统
CN108370346A (zh) * 2015-10-09 2018-08-03 萨托里环球有限责任公司 用于存储和传送消息数据的系统和方法
CN108965450A (zh) * 2018-07-27 2018-12-07 江西贪玩信息技术有限公司 业务请求响应方法、装置、计算机设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Asynchronous event handling and real-time threads in the real-time specification for Java;A.J. Wellings等;《Proceedings. Eighth IEEE Real-Time and Embedded Technology and Applications Symposium》;第81-89页 *
Servlet异步特性在Pushlet推技术中的应用研究;张丽静等;《电脑知识与技术》;第5379-5382页 *

Also Published As

Publication number Publication date
CN111190727A (zh) 2020-05-22

Similar Documents

Publication Publication Date Title
CN111190727B (zh) 内存的异步析构方法、装置、计算机设备及存储介质
CN110489447B (zh) 数据查询方法、装置、计算机设备和存储介质
CN103530292B (zh) 网页显示方法和装置
CN111241125A (zh) 一种记录操作日志的方法、装置、电子设备和存储介质
CN112035531B (zh) 敏感数据处理方法、装置、设备及介质
CN105516086A (zh) 业务处理方法及装置
CN109542642A (zh) 一种前端任务处理的方法及装置
CN102710776B (zh) 一种防止短时间内重复请求api服务器的方法
CN108965450B (zh) 业务请求响应方法、装置、计算机设备和存储介质
CN107633080B (zh) 一种用户任务处理方法及装置
CN113741754A (zh) 任务创建方法、装置、电子设备和计算机可读存储介质
CN113312553A (zh) 一种用户标签的确定方法和装置
CN107870921B (zh) 一种日志数据处理方法及装置
US20200364582A1 (en) Performing data processing based on decision tree
CN111294377B (zh) 一种依赖关系的网络请求发送方法、终端装置及存储介质
CN101394405A (zh) 一种数据请求处理的方法和装置
CN116126719A (zh) 接口测试方法、装置、电子设备及存储介质
US9582368B2 (en) Method and apparatus for text input protection
CN104346228A (zh) 共享应用程序的方法及终端
CN111597240A (zh) 数据导出方法、装置、计算机设备和存储介质
CN110825477A (zh) 图形界面的加载方法、装置、设备及存储介质
CN111078736A (zh) 一种数据聚合处理方法、装置、终端及存储介质
CN111163123A (zh) 一种服务请求的处理方法及装置
CN111191082A (zh) 数据管理方法、装置、计算机设备和存储介质
CN110704026A (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