CN112035289A - 一种数据块泄漏的确定方法及装置、存储介质、电子装置 - Google Patents

一种数据块泄漏的确定方法及装置、存储介质、电子装置 Download PDF

Info

Publication number
CN112035289A
CN112035289A CN202010917315.8A CN202010917315A CN112035289A CN 112035289 A CN112035289 A CN 112035289A CN 202010917315 A CN202010917315 A CN 202010917315A CN 112035289 A CN112035289 A CN 112035289A
Authority
CN
China
Prior art keywords
data block
state information
determining
abnormal
current
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.)
Pending
Application number
CN202010917315.8A
Other languages
English (en)
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.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua Technology 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 Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN202010917315.8A priority Critical patent/CN112035289A/zh
Publication of CN112035289A publication Critical patent/CN112035289A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种数据块泄漏的确定方法及装置、存储介质、电子装置,确定方法包括:获取数据块当前的状态信息,其中,状态信息包括第一状态信息和/或第二状态信息,其中,第一状态信息用于指示数据块的当前归属进程,第二状态信息用于指示数据块的目标归属进程;根据数据块的状态信息和进程异常情况确定数据块是否发生泄漏。能够及时发现泄漏的数据块,因此,可以解决相关技术中无法及时确定数据块泄漏的问题,达到及时确定数据块泄漏,保障系统正常运行的技术效果。

Description

一种数据块泄漏的确定方法及装置、存储介质、电子装置
技术领域
本发明涉及通信领域,具体而言,涉及一种数据块泄漏的确定方法及装置、存储介质、电子装置。
背景技术
在Linux环境,例如嵌入式安防产品Linux环境中,数据块,例如图像数据块,会在设备内部流转。Linux作为多进程操作系统,允许业务采用多进程的方式部署实现。数据块作为一种具有特定含义的内存数据,在进程之间流转。
数据块被Linux用户态进程获取后,在进程间传递和使用。在嵌入式安防产品中数据块可以作为有限的内存资源被反复使用,比如YUV图像数据块,其中,YUV是编译true-color颜色空间(color space)的种类,Y'UV,YUV,YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。所以一帧YUV图像数据,其生命周期为“申请、流转、使用……释放”的过程,当数据块在流转过程中,因发生了异常情况,例如流转的链路中某个进程出现异常(例如退出)时,该数据块将因为无法继续流转到释放环节,造成数据块的泄漏。在这种场景中,虽然可以推测异常情况可能会造成数据块的泄漏,但无法得知哪个数据块在什么时候发生了泄漏,也就无法及时处理这种泄漏的数据块,从而影响系统正常运行。例如,公开号为CN105446871B的专利提供了一种资源泄漏检测方法、装置及系统,其设计的主要缺点是通过增长趋势,以及触发阈值进行判别,该方法只是可以做到资源泄漏的预警,当满足触发阈值的条件时,系统中已经长期出现数据块泄漏的情况,所以该专利并没有有效解决资源泄漏的问题。又如公开号为CN107957950A的专利提供了一种系统资源泄漏的检测方法和装置,其设计的主要缺点是对疑似发生资源泄漏的进程进行重启,实现资源回收,但是如果该进程再次启动后,还是会出现泄漏,只是进入了一个不同重启-回收的循环过程,也并没有有效解决资源泄漏的问题。
针对相关技术中的无法及时确定数据块泄漏问题,尚不存在较好的解决方案。
发明内容
本发明实施例提供了一种数据块泄漏的确定方法及装置、存储介质、电子装置,以至少解决相关技术中无法及时确定数据块泄露的问题。
根据本发明的一个实施例,提供了一种数据块泄漏的确定方法,其特征在于,包括:
获取数据块当前的状态信息,其中,所述状态信息包括第一状态信息和/或第二状态信息,其中,所述第一状态信息用于指示所述数据块的当前归属进程,所述第二状态信息用于指示所述数据块的目标归属进程;
根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏。
根据本发明的另一个实施例,一种数据块泄漏的确定装置,其特征在于,包括:
第一获取模块,用于获取数据块当前的状态信息,其中,所述状态信息包括第一状态信息和/或第二状态信息,其中,所述第一状态信息用于指示所述数据块的当前归属进程,所述第二状态信息用于指示所述数据块的目标归属进程;
确定模块,用于根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏。
根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明实施例,由于获取数据块当前的状态信息,其中,所述状态信息包括第一状态信息和/或第二状态信息,其中,所述第一状态信息用于指示所述数据块的当前归属进程,所述第二状态信息用于指示所述数据块的目标归属进程;根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏,能够及时发现泄漏的数据块,因此,可以解决相关技术中无法及时确定数据块泄漏的问题,达到及时确定数据块泄漏,保障系统正常运行的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种数据块泄漏的确定方法的移动终端的硬件结构框图;
图2是根据本发明实施例的数据块泄漏的确定方法的流程图;
图3是根据本发明实施例的数据块泄漏的确定装置的结构框图;
图4是根据本发明示例实施方式的数据块流转过程示意图;
图5是根据本发明示例实施方式的监测模块维护数据块信息的过程示意图;
图6是根据本发明示例实施方式的获取数据块信息的方式一;
图7是根据本发明示例实施方式的获取数据块信息的方式二;
图8是根据本发明示例实施方式的数据块流转过程中数据块的状态信息变化示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端、监控摄像机或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本发明实施例的一种数据块泄漏的确定方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,在一个示例中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的数据块泄漏的确定方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述计算机终端的数据块泄漏的确定方法,图2是根据本发明实施例的数据块泄漏的确定方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,获取数据块当前的状态信息,其中,所述状态信息包括第一状态信息和/或第二状态信息,其中,所述第一状态信息用于指示所述数据块的当前归属进程,所述第二状态信息用于指示所述数据块的目标归属进程;
步骤S204,根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏。
通过上述步骤,由于获取数据块当前的状态信息,其中,所述状态信息包括第一状态信息和/或第二状态信息,其中,所述第一状态信息用于指示所述数据块的当前归属进程,所述第二状态信息用于指示所述数据块的目标归属进程;根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏。能够及时发现泄漏的数据块,因此,可以解决相关技术中无法及时确定数据块泄漏的问题,达到及时确定数据块泄漏,保障系统正常运行的技术效果。
需要说明的是,数据块表示一块内容为数据的内存。数据块的当前归属进程可以指该数据块当前的持有者,即,当前使用该数据块的进程。数据块的目标归属进程可以指申请使用该数据块的进程,即,当前并没有持有该数据块,但是未来需要持有该数据块的进程,例如,可以是下一个需要持有该数据块的进程。还需要说明的是,一般情况下,一个数据块同一时间只能被一个进程所持有,所以,当某进程持有某数据块时,其他进程是不可能也持有该数据块的。
在一个示例中,所述根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏,包括:
在所述状态信息包括所述第一状态信息和所述第二状态信息,并且,出现以下至少之一的情况下,确定所述数据块发生泄漏:
所述进程异常情况指示了所述第一状态信息所对应的所述当前归属进程发生异常、所述进程异常情况指示了所述第二状态信息所对应的所述目标归属进程发生异常。
在一个示例中,所述根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏,包括:在所述状态信息包括所述第一状态信息和所述第二状态信息,并且,所述进程异常情况指示了所述第一状态信息所对应的所述当前归属进程无异常和所述第二状态信息所对应的所述目标归属进程无异常的情况下,确定所述数据块没有发生泄漏。
在一个示例中,所述根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏,包括:在所述状态信息仅包括所述第一状态信息,并且,所述进程异常情况指示了所述第一状态信息所对应的所述当前归属进程发生异常的情况下,确定所述数据块发生泄漏。
在一个示例中,所述根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏,包括:在所述状态信息仅包括所述第一状态信息,并且,所述进程异常情况指示了所述第一状态信息所对应的所述当前归属进程无异常的情况下,确定所述数据块没有发生泄漏。
在一个示例中,在所述状态信息包括所述第一状态信息,并且,所述数据块被第一进程所使用的情况下,所述数据块的所述第一状态信息为所述第一进程的进程标识,所述进程标识用于唯一地标识所述第一进程;
在一个示例中,在所述状态信息包括所述第一状态信息,并且,所述数据块没有被进程所使用的情况下,所述数据块的所述第一状态信息为空值,其中,所述空值用于指示所述数据块当前没有被使用。
在一个示例中,在所述状态信息包括所述第二状态信息,并且,第二进程申请使用所述数据块并且所述第二进程还未接收到所述数据块的情况下,所述第二状态信息为所述第二进程的进程标识,所述进程标识用于唯一地标识所述第二进程;
在一个示例中,在所述状态信息包括所述第二状态信息,并且,在没有第三进程申请使用所述数据块的情况下,所述第二状态信息为空值,其中,所述空值用于指示没有进程需要继续使用所述数据块。
需要说明的是,如果某个数据块的第一状态信息和第二状态信息都是空值,说明该数据块不归属于任何一个进程,即,该数据块是没有被进程所持有的。上述的数据块被进程所使用表示的是进程实际“持有”该数据块,或者说,进程是该数据块的“持有者”。
在一个示例中,所述获取数据块当前的状态信息,包括:接收所述数据块的当前归属进程所上报的所述状态信息;或者,查询所述数据块的所述状态信息。
在一个示例中,在所述根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏之前,所述方法还包括:
通过以下至少之一的方式获取所述进程异常情况:
查询所述数据块的当前归属进程是否存活;
确定是否接收到注册异常信号,其中,所述注册异常信号用于指示所述数据块的当前归属进程注册异常;
接收进程退出信号,其中,所述进程退出信号用于指示进程退出。
在一个示例中,所述方法还包括:在确定数据块发生泄漏之后,回收所述数据块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种数据块泄漏的确定装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图3是根据本发明实施例的数据块泄漏的确定装置的结构框图,如图3所示,该装置包括:
第一获取模块31,用于获取数据块当前的状态信息,其中,所述状态信息包括第一状态信息和/或第二状态信息,其中,所述第一状态信息用于指示所述数据块的当前归属进程,所述第二状态信息用于指示所述数据块的目标归属进程;
确定模块33,用于根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏。
通过上述步骤,由于获取数据块当前的状态信息,其中,所述状态信息包括第一状态信息和/或第二状态信息,其中,所述第一状态信息用于指示所述数据块的当前归属进程,所述第二状态信息用于指示所述数据块的目标归属进程;根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏。能够及时发现泄漏的数据块,因此,可以解决相关技术中无法及时确定数据块泄漏的问题,达到及时确定数据块泄漏,保障系统正常运行的技术效果。
所述确定模块,还用于在所述状态信息包括所述第一状态信息和所述第二状态信息,并且,出现以下至少之一的情况下,确定所述数据块发生泄漏:
所述进程异常情况指示了所述第一状态信息所对应的所述当前归属进程发生异常、所述进程异常情况指示了所述第二状态信息所对应的所述目标归属进程发生异常;
或者,
示例性地,所述确定模块,还用于在所述状态信息包括所述第一状态信息和所述第二状态信息,并且,所述进程异常情况指示了所述第一状态信息所对应的所述当前归属进程无异常和所述第二状态信息所对应的所述目标归属进程无异常的情况下,确定所述数据块没有发生泄漏。
示例性地,所述确定模块,还用于在所述状态信息仅包括所述第一状态信息,并且,所述进程异常情况指示了所述第一状态信息所对应的所述当前归属进程发生异常的情况下,确定所述数据块发生泄漏;
或者,
示例性地,所述确定模块,还用于在所述状态信息仅包括所述第一状态信息,并且,所述进程异常情况指示了所述第一状态信息所对应的所述当前归属进程无异常的情况下,确定所述数据块没有发生泄漏。
示例性地,在所述状态信息包括所述第一状态信息,并且,所述数据块被第一进程所使用的情况下,所述数据块的所述第一状态信息为所述第一进程的进程标识,所述进程标识用于唯一地标识所述第一进程;
示例性地,在所述状态信息包括所述第一状态信息,并且,所述数据块没有被进程所使用的情况下,所述数据块的所述第一状态信息为空值,其中,所述空值用于指示所述数据块当前没有被使用。
示例性地,在所述状态信息包括所述第二状态信息,并且第二进程申请使用所述数据块并且所述第二进程还未接收到所述数据块的情况下,所述第二状态信息为所述第二进程的进程标识,所述进程标识用于唯一地标识所述第二进程;
示例性地,在所述状态信息包括所述第二状态信息,并且,没有第三进程申请使用所述数据块的情况下,所述第二状态信息为空值,其中,所述空值用于指示没有进程需要继续使用所述数据块。
示例性地,所述第一获取模块,用于接收所述数据块的当前归属进程所上报的所述状态信息;或者,所述第一获取模块,用于查询所述数据块的所述状态信息。
示例性地,所述装置还包括:
第二获取模块,用于在所述根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏之前,通过以下至少之一的方式获取所述进程异常情况:
查询所述数据块的当前归属进程是否存活;
确定是否接收到注册异常信号,其中,所述注册异常信号用于指示所述数据块的当前归属进程注册异常;
接收进程退出信号,其中,所述进程退出信号用于指示进程退出。
示例性地,所述装置还包括:
回收模块,用于在确定数据块发生泄漏之后,回收所述数据块。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
示例实施方式
以下结合具体场景对本发明实施例进行进一步解释说明。
以下解释对于一个资源完整的跟踪以及泄漏的完整方案的流程:从申请到流转再到最后释放的过程中,各个相关模块的配合方式。
本实施例定义了一种资源的owner状态,通过资源的owner状态来表征资源的持有者。并且采用curr-owner和next-owner两个状态标记。
curr-owner=A;next-owner=null:持有者是A;
curr-owner=null;next-owner=B:数据在流转的传输环节;
curr-owner=B;next-owner=null:数据到达B,并且确认持有者为B;
采用双标记的方法,可以提升在数据流转环节(即数据不被任何一个进程所持有)过程出现进程B异常时,及时准确识别出数据泄漏。
需要说明的是,如果采用单标记,例如,只标记数据的持有者,那由于不能明确的知道下一个进程是谁,那么当下一个进程出现异常时,也只能认定为数据还在传输中。
本实施例阐述了关于owner状态的维护方法,其方法包括:
在资源申请时,设置资源curr-owner的初始状态为申请者进程标识;
在资源传递过程中,资源的当前持有进程将数据的curr-owner标记为null,并且设置next-owner为传递的目标进程;
当接收进程已经确认接收后,将资源的curr-owner标记为自己,同时设置next-owner为null;
当资源流转到最后一个使用者时,资源使用完成后进行释放操作,此时将curr-owner设置为null;
表1是根据curr-owner/next-owner资源泄漏判定方法的示意,如表1所示:
Figure BDA0002665468450000111
Figure BDA0002665468450000121
表1
示例性地,本实施方式基于Linux操作系统环境特性,提供一种基于数据块状态管理的方案,配合数据块在流转过程中的状态标记方法,并可以由一个独立的管理模块来对所有数据块进行监测,图4是根据本发明示例实施方式的数据块流转过程示意图,如图4所示:
进程可以申请数据块,数据块在进程之间流转,本实施方式中设计了一个数据块监测模块(后面简称“监测模块”),当有进程需要进行数据块的申请或者释放操作时,截获该数据块的信息,例如获取数据块申请或者释放的信息,并维护该数据块的信息。
在一个示例中,图5是根据本发明示例实施方式的监测模块维护数据块信息的过程示意图,如图5所示,在进程进行数据块的申请或者释放操作时,监测模块根据数据块申请或者释放的信息,维护该数据块的信息,所维护的该数据块的信息可以包含以下至少之一:数据块地址、数据块大小、数据块申请进程标识(即申请使用该数据块的进程的标识,相当于上述实施例中的“目标归属进程”)、当前使用该数据块的进程的标识(相当于上述实施例中的“当前归属进程”)。其中,申请进程的标识可以是能够唯一标识该进程的信息,例如该进程的进程ID。
需要说明的是,数据块存放在内存中,通过数据块地址可以找到该数据块。
示例性地,要实现获取该数据块的信息,可以采用如下的方法:示例性地,一种是如图6所示的方法,图6是根据本发明示例实施方式的获取数据块信息的方式一,如图6所示,数据块Provider提供的申请释放应用程序编程接口(Application ProgrammingInterface,API)中主动上报,告知数据块监测模块;示例性地,数据块provider可以是LinuxOS。另一种是如图7所示的方法,图7是根据本发明示例实施方式的获取数据块信息的方式二,如图7所示,由数据块的申请进程进行主动上报,告知数据块监测模块。又如,可以采用程序运行时动态替换的方式截获申请和/或释放信息,如:使用gcc的--wrap选项方式进行函数符号替换;如果申请函数在so动态库中实现,可以采用修改plt表的方式;需要说明的是,用户在调用申请/释放函数的时候,能够在申请/释放的过程中增加一些操作,如果是释放的时候,可以告知检测模块数据块可以释放了,无人在用,可以从监测的表中剔除,不用再对这个数据块进行检测了。
示例性地,可以跟踪数据块信息的状态,确定当前数据块内存块所有者是哪个进程,数据块状态可以包括当前使用该数据库的进程的标识。
示例性地,当数据块被其他进程申请使用后,数据块所属的归属者(owner)就变成了该申请使用该数据块的进程;当数据块进行流转时,其情景如图8所示,图8是根据本发明示例实施方式的数据块流转过程中数据块的状态信息变化示意图:
在数据块进行流转时,数据块的持有者(curr-owner)发生了改变,在这个过程中,数据块的owner状态迁移信息为:
a)进程A申请到数据块后,数据块当前持有者curr-owner为A;
b)进程A确定不再对数据块进行操作,准备传递给进程B;数据块的持有者状态为curr-owner=null;next-owner=B;
需要说明的是,已经明确了数据块跟进程A无关了,所以数据块出现了任何问题,都跟进程A没关系;同时进程A出现任何异常,对数据块也没有任何影响;数据块准备传递给进程B,但进程B还没正式的接收到数据块,所以数据块的owner即将为进程B,但此时owner还不是进程B;
c)进程B收到数据块,并且明确要开始使用,则此时数据块的持有者状态为curr-owner=B;next-owner=null;
d)数据块根据业务需要一直向后续进程流转,直到某个进程X确认数据块可以释放(或销毁)时,进程X将其状态修改为curr-owner=null;next-owner=null。并且执行释放操作。
可选地,判定数据块泄漏的策略方法可以是:监测模块获取owner的信息,以及对应owner进程的状态,表2是根据curr-owner和next-owner判定矩阵,表2给出了示意数据块在进程A到进程B之间流转的三个状态,以及在这三个状态过程中,出现下面的异常时,判定出泄漏的矩阵示意:
Figure BDA0002665468450000141
表2
以下表3是根据curr-owner判定矩阵示意,如表3所示:
Figure BDA0002665468450000142
Figure BDA0002665468450000151
表3
在本实施方式中可以采用上述两个表2或表3进行判定,其中表2在数据从A传递到B的过程中,如果进程B出现了异常,会因为没有接收者,数据块将一直停留在curr-owner为null的状态,此时无法判定是在传输的过程中,还是因为B退出导致一直没有接收者,需要采用其它的辅助手段进行判定数据块是否发生泄漏。
例如,监测模块通过表1的判定矩阵来确定数据块是否泄漏,其中监测模块必须能获取到每个被监测的数据块当前owner的信息。可选地,可以通过以下的方式获取owner的信息:
a)监测模块提供函数或协议,由数据块的使用进程进行主动调用,调用的是监测模块提供函数或协议,将状态信息上报给监测模块;监测模块更新自己维护的数据块信息表的内容;
b)数据块具有一个固定的数据结构头描述,并且数据块的使用者进程能够修改头结构中的curr-owner、next-owner的内容;
为了能够监测到数据块-owner进程的异常状态,示例性地,监测模块可以采用如下几种方案获取数据块-owner进程的异常状态:
a)监测模块采用定时查询的方式,检查owner进程是否还存活,如:查看Linux/proc/<pid>的方法;
b)数据块使用进程,注册异常信号,当收到异常信号时,在信号处理函数中立即通知监测模块,增强轮询方式下的时间延迟的响应速度;
c)从Linux操作系统Task管理模块中Task退出的流程中向监测模块进行通知,如:进程退出都会向父进程发出SIGCHLD信号,在发出SIGCHLD的点上向监测模块同时也发一个通知信号。
其中a)的方法采用轮询,保证进程异常退出后,保障进程异常退出后一定被收集到;b)和c)弥补了a)方法中轮询带来的延迟的问题,提升资源回收的及时性。
可选地,判定为资源泄漏后进行强制资源释放回收,例如,判定一个数据块为泄漏时,监测模块可以直接将对应的数据块进行回收。
需要说明的是,本实施例中的资源监测模块可以是集成在数据块Provider中,也可以是一个独立的进程,一个独立的驱动模块。
本实施例相较于以往的统计单个进程的资源使用情况,解决了多个进程协作的系统上资源泄漏的问题;虽然相关技术中是从整个系统去统计所有进程的资源占用情况,但解决的还是每个进程的私有独占资源,未能解决资源在多进程之间流转的使用场景下的资源泄漏问题;
在本实施例中,资源在进程间流转,资源在每个进程中作为实体,当前进程持有与否,不会体现在资源的占用率的持续提升,特别是内存资源,可以在多个进程间的内存空间中都有包含该资源,但持有者在某个时刻不属于该进程。从Linux的角度上看资源占用率是没有一个增加的数据体现。
在本实施例中,资源监测到泄漏后,还需要做到回收,保证跟发生资源泄漏的进程的无关联的其它进程可重复使用。特别是系统内存在多业务的场景下,一个业务由多个进程组成,某一个业务的某个进程出现异常,发生资源泄漏,做好资源回收后可供其它业务使用。
本发明的实施例还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取数据块当前的状态信息,其中,所述状态信息包括第一状态信息和/或第二状态信息,其中,所述第一状态信息用于指示所述数据块的当前归属进程,所述第二状态信息用于指示所述数据块的目标归属进程;
S2,根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏。
通过上述步骤,由于获取数据块当前的状态信息,其中,所述状态信息包括第一状态信息和/或第二状态信息,其中,所述第一状态信息用于指示所述数据块的当前归属进程,所述第二状态信息用于指示所述数据块的目标归属进程;根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏。能够及时发现泄漏的数据块,因此,可以解决相关技术中无法及时确定数据块泄漏的问题,达到及时确定数据块泄漏,保障系统正常运行的技术效果。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取数据块当前的状态信息,其中,所述状态信息包括第一状态信息和/或第二状态信息,其中,所述第一状态信息用于指示所述数据块的当前归属进程,所述第二状态信息用于指示所述数据块的目标归属进程;
S2,根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏。
通过上述步骤,由于获取数据块当前的状态信息,其中,所述状态信息包括第一状态信息和/或第二状态信息,其中,所述第一状态信息用于指示所述数据块的当前归属进程,所述第二状态信息用于指示所述数据块的目标归属进程;根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏。能够及时发现泄漏的数据块,因此,可以解决相关技术中无法及时确定数据块泄漏的问题,达到及时确定数据块泄漏,保障系统正常运行的技术效果。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种数据块泄漏的确定方法,其特征在于,包括:
获取数据块当前的状态信息,其中,所述状态信息包括第一状态信息和/或第二状态信息,其中,所述第一状态信息用于指示所述数据块的当前归属进程,所述第二状态信息用于指示所述数据块的目标归属进程;
根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏,包括:
在所述状态信息包括所述第一状态信息和所述第二状态信息,并且,出现以下至少之一的情况下,确定所述数据块发生泄漏:
所述进程异常情况指示了所述第一状态信息所对应的所述当前归属进程发生异常、所述进程异常情况指示了所述第二状态信息所对应的所述目标归属进程发生异常;
或者,
在所述状态信息包括所述第一状态信息和所述第二状态信息,并且,所述进程异常情况指示了所述第一状态信息所对应的所述当前归属进程无异常和所述第二状态信息所对应的所述目标归属进程无异常的情况下,确定所述数据块没有发生泄漏。
3.根据权利要求1所述的方法,其特征在于,所述根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏,包括:
在所述状态信息仅包括所述第一状态信息,并且,所述进程异常情况指示了所述第一状态信息所对应的所述当前归属进程发生异常的情况下,确定所述数据块发生泄漏;
或者,
在所述状态信息仅包括所述第一状态信息,并且,所述进程异常情况指示了所述第一状态信息所对应的所述当前归属进程无异常的情况下,确定所述数据块没有发生泄漏。
4.根据权利要求1所述的方法,其特征在于,在所述状态信息包括所述第一状态信息,并且,所述数据块被第一进程所使用的情况下,所述数据块的所述第一状态信息为所述第一进程的进程标识,所述进程标识用于唯一地标识所述第一进程;
在所述状态信息包括所述第一状态信息,并且,所述数据块没有被进程所使用的情况下,所述数据块的所述第一状态信息为空值,其中,所述空值用于指示所述数据块当前没有被使用。
5.根据权利要求1所述的方法,其特征在于,在所述状态信息包括所述第二状态信息,并且,第二进程申请使用所述数据块并且所述第二进程还未接收到所述数据块的情况下,所述第二状态信息为所述第二进程的进程标识,所述进程标识用于唯一地标识所述第二进程;
在所述状态信息包括所述第二状态信息,并且,没有第三进程申请使用所述数据块的情况下,所述第二状态信息为空值,其中,所述空值用于指示没有进程需要继续使用所述数据块。
6.根据权利要求1所述的方法,其特征在于,所述获取数据块当前的状态信息,包括:
接收所述数据块的当前归属进程所上报的所述状态信息;或者,
查询所述数据块的所述状态信息。
7.根据权利要求1所述的方法,其特征在于,在所述根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏之前,所述方法还包括:
通过以下至少之一的方式获取所述进程异常情况:
查询所述数据块的当前归属进程是否存活;
确定是否接收到注册异常信号,其中,所述注册异常信号用于指示所述数据块的当前归属进程注册异常;
接收进程退出信号,其中,所述进程退出信号用于指示进程退出。
8.根据权利要求1至7中的任一项所述的方法,其特征在于,所述方法还包括:
在确定数据块发生泄漏之后,回收所述数据块。
9.一种数据块泄漏的确定装置,其特征在于,包括:
第一获取模块,用于获取数据块当前的状态信息,其中,所述状态信息包括第一状态信息和/或第二状态信息,其中,所述第一状态信息用于指示所述数据块的当前归属进程,所述第二状态信息用于指示所述数据块的目标归属进程;
确定模块,用于根据所述数据块的所述状态信息和进程异常情况确定所述数据块是否发生泄漏。
10.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至8任一项中所述的方法。
11.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至8任一项中所述的方法。
CN202010917315.8A 2020-09-03 2020-09-03 一种数据块泄漏的确定方法及装置、存储介质、电子装置 Pending CN112035289A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010917315.8A CN112035289A (zh) 2020-09-03 2020-09-03 一种数据块泄漏的确定方法及装置、存储介质、电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010917315.8A CN112035289A (zh) 2020-09-03 2020-09-03 一种数据块泄漏的确定方法及装置、存储介质、电子装置

Publications (1)

Publication Number Publication Date
CN112035289A true CN112035289A (zh) 2020-12-04

Family

ID=73592147

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010917315.8A Pending CN112035289A (zh) 2020-09-03 2020-09-03 一种数据块泄漏的确定方法及装置、存储介质、电子装置

Country Status (1)

Country Link
CN (1) CN112035289A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101414272A (zh) * 2008-10-17 2009-04-22 上海华为技术有限公司 内存泄漏的检测方法和装置
CN103473172A (zh) * 2013-09-05 2013-12-25 无敌科技(西安)有限公司 检查后台程序内存泄露并定位泄露内存点的系统及方法
CN106708616A (zh) * 2016-11-29 2017-05-24 深圳天珑无线科技有限公司 进程控制方法和进程控制装置
US9760464B1 (en) * 2015-03-27 2017-09-12 Amazon Technologies, Inc. Memory leak detection
US20200042371A1 (en) * 2018-08-02 2020-02-06 Samsung Electronics Co., Ltd. Method for detecting memory leak and electronic device thereof
CN111400125A (zh) * 2020-02-13 2020-07-10 中国平安人寿保险股份有限公司 Java进程的内存溢出监控方法、装置、设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101414272A (zh) * 2008-10-17 2009-04-22 上海华为技术有限公司 内存泄漏的检测方法和装置
CN103473172A (zh) * 2013-09-05 2013-12-25 无敌科技(西安)有限公司 检查后台程序内存泄露并定位泄露内存点的系统及方法
US9760464B1 (en) * 2015-03-27 2017-09-12 Amazon Technologies, Inc. Memory leak detection
CN106708616A (zh) * 2016-11-29 2017-05-24 深圳天珑无线科技有限公司 进程控制方法和进程控制装置
US20200042371A1 (en) * 2018-08-02 2020-02-06 Samsung Electronics Co., Ltd. Method for detecting memory leak and electronic device thereof
CN111400125A (zh) * 2020-02-13 2020-07-10 中国平安人寿保险股份有限公司 Java进程的内存溢出监控方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN110389815B (zh) 任务处理方法、装置及系统
US20220201534A1 (en) Method and device for determining terminal behavior analysis
CN109635523B (zh) 应用程序检测方法、装置及计算机可读存储介质
CN112534776A (zh) 用于在网络环境中检测网络功能失败和重启的方法及装置
CN104021141B (zh) 数据处理和云服务的方法、装置及系统
US9854466B2 (en) Method and apparatus for managing monitoring task
CN110943862B (zh) 互斥业务判断方法、装置、电子设备及存储介质
CN110557416B (zh) 一种多节点协同打块的方法及系统
CN110996056B (zh) 一种级联监控系统的视频存储方法及装置
US9949061B2 (en) Fault management method and apparatus
CN110738156A (zh) 一种基于消息中间件的人脸识别系统及方法
CN112035289A (zh) 一种数据块泄漏的确定方法及装置、存储介质、电子装置
CN103593239B (zh) Linux系统中应用进程命令处理的方法及装置
CN101998570B (zh) 网络切换方法及系统
CN111381868B (zh) 一种嵌入式系统驱动层的实现方法和装置
US10674337B2 (en) Method and device for processing operation for device peripheral
CN112653609B (zh) 一种vpn识别应用方法、装置、终端及存储介质
CN109711512A (zh) 二维码生成方法及装置
CN104657152B (zh) 数据传输管理方法以及电子设备
CN109901933B (zh) 业务系统的操作方法及装置、存储介质、电子装置
CN109039783B (zh) 一种告警方法及装置
CN107528714B (zh) 脚本处理方法、装置、系统及路由器
CN112579616A (zh) 任务处理方法、装置、存储介质和电子设备
CN115065649B (zh) 业务报文转发方式的确定方法、装置、设备及存储介质
CN109445942B (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20201204