CN108334435A - 一种共享内存泄漏的提醒方法及装置 - Google Patents
一种共享内存泄漏的提醒方法及装置 Download PDFInfo
- Publication number
- CN108334435A CN108334435A CN201810047922.6A CN201810047922A CN108334435A CN 108334435 A CN108334435 A CN 108334435A CN 201810047922 A CN201810047922 A CN 201810047922A CN 108334435 A CN108334435 A CN 108334435A
- Authority
- CN
- China
- Prior art keywords
- shared drive
- target process
- address space
- size
- attached
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/324—Display of status information
- G06F11/327—Alarm or error message display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种共享内存泄漏的提醒方法及装置。一种共享内存泄漏的提醒方法,包括:在接收到目标进程成功启动的消息后,对所述目标进程的地址空间进行监测;根据监测结果,获取所述地址空间中所述目标进程附接各共享内存所占用的地址空间的大小,以及所述目标进程附接的共享内存的信息;根据所述目标进程附接各共享内存所占用的地址空间的大小,和/或所述目标进程附接的共享内存的信息,判断所述目标进程是否存在共享内存泄漏;若是,则进行提醒。本申请可实现对共享内存泄漏的自动监测及提醒,使系统管理员能及时发现共享内存泄漏。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种共享内存泄漏的提醒方法及装置。
背景技术
在多进程操作系统中,多个进程经常需要共享数据,通常可采用共享内存的方式实现多个进程共享同一内存中的数据。一个进程创建共享内存后,其它进程若需要使用该共享内存中的数据,可将该共享内存映射到自己的地址空间,即附接该共享内存,当使用完成后,解除附接该共享内存即可。
但由于编程缺陷,可能出现某进程多次附接同一共享内存,但使用完该共享内存后却未解除附接的现象,称为共享内存泄漏。且由于某进程多次附接同一共享内存时,该共享内存会占用该进程地址空间的不同位置,由此在出现共享内存泄漏时,将使得该进程的地址空间不断被消耗,可能导致该进程无法附接其它共享内存或分配内存,甚至可能导致该进程崩溃。
现有技术中,为了确定某进程是否存在共享内存泄漏的问题,一种实现方式是,在操作系统中维护一张共享内存使用情况表,该表可记录共享内存的key值、被附接的次数等。另外一种实现方式是,操作系统可记录各个进程的地址空间信息表,该表可展示该进程中哪段地址附接了哪些共享内存。管理员可通过预定的手段查看上述共享内存使用情况表或某进程的地址空间信息表,当发现表中某共享内存被附接的次数超出预设次数时,可根据该共享内存的key值手动查找附接该共享内存的进程的源代码,根据该源代码中对该共享内存的附接和解除附接是否存在不对称的现象,确定该进程是否存在共享内存泄漏。
现有技术的两种实现方式中,均需依靠管理员的经验,由此才可在进程地址空间不足或进程使用内存异常偏多时,联想到可能存在共享内存泄漏,进而查看共享内存使用情况表或地址空间信息表。此外,当确定导致进程地址空间不足或进程使用内存异常偏多的共享内存时,还需管理员对进程的源代码进行分析,以确定进程是否存在共享内存泄漏。由此将使得确定共享内存泄漏较为费时费力。
发明内容
有鉴于此,本申请提供一种共享内存泄漏的提醒方法及装置,以实现对共享内存泄漏的自动监测及提醒,使系统管理员能及时发现共享内存泄漏。
具体地,本申请是通过如下技术方案实现的:
一种共享内存泄漏的提醒方法,包括:
在接收到目标进程成功启动的消息后,对所述目标进程的地址空间进行监测;
根据监测结果,获取所述地址空间中所述目标进程附接各共享内存所占用的地址空间的大小,以及所述目标进程附接的共享内存的信息;
根据所述目标进程附接各共享内存所占用的地址空间的大小,和/或所述目标进程附接的共享内存的信息,判断所述目标进程是否存在共享内存泄漏;
若是,则进行提醒。
一种共享内存泄漏的提醒装置,包括:
监测模块,用于在接收到目标进程成功启动的消息后,对所述目标进程的地址空间进行监测;
第一获取模块,用于根据监测结果,获取所述地址空间中所述目标进程附接各共享内存所占用的地址空间的大小,以及所述目标进程附接的共享内存的信息;
判断模块,用于根据所述目标进程附接各共享内存所占用的地址空间的大小,和/或所述目标进程附接的共享内存的信息,判断所述目标进程是否存在共享内存泄漏;
提醒模块,用于在确定所述目标进程存在共享内存泄漏时,进行提醒。
在本申请中,可在接收到目标进程成功启动的消息后,通过对目标进程的地址空间进行监测,以获取目标进程附接各共享内存所占用的地址空间的大小,以及所述目标进程附接的共享内存的信息,并可根据目标进程附接各共享内存所占用的地址空间的大小,和/或目标进程附接的共享内存的信息,判断目标进程是否存在共享内存泄漏,若存在共享内存泄漏,则可自动进行提醒。
与现有技术相比,一方面,本申请可自动对目标进程附接共享内存的情况进行监测,以判断目标进程是否存在共享内存泄漏,从而可无需通过人工查看共享内存使用情况表或地址空间信息表等,查找是否存在共享内存泄漏,从而可节省查找共享内存的耗时以及人力。另一方面,本申请还可在发现共享内存泄漏时,自动进行提醒,从而可使系统管理员能及时发现共享内存泄漏。
附图说明
图1是本申请一示例性实施例示出的一种共享内存泄漏的提醒方法的流程图;
图2是本申请一示例性实施例示出的一种网络设备的硬件结构图;
图3是本申请一示例性实施例示出的一种共享内存泄漏的提醒装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
现有技术中,为了确定某进程是否存在共享内存泄漏的问题,一种实现方式是,在操作系统中维护一张共享内存使用情况表,该表可记录共享内存的key值、被附接的次数等。另外一种实现方式是,操作系统可记录各个进程的地址空间信息表,该表可展示该进程中哪段内存附接了哪些共享内存。管理员可通过预定的手段查看上述共享内存使用情况表或某进程的地址空间信息表,当发现表中某共享内存被附接的次数超出预设次数时,可根据该共享内存的key值手动查找附接该共享内存的进程的源代码,根据该源代码中对该共享内存的附接和解除附接是否存在不对称的现象,确定该进程是否存在共享内存泄漏。
现有技术的两种实现方式中,均需依靠管理员的经验,由此才可在进程地址空间不足或进程使用内存异常偏多时,联想到可能存在共享内存泄漏,进而查看共享内存使用情况表或地址空间信息表。此外,当确定导致进程地址空间不足或进程使用内存异常偏多的共享内存时,还需管理员对进程的源代码进行分析,以确定进程是否存在共享内存泄漏。由此将使得确定共享内存泄漏较为费时费力。
因此,为了解决上述问题,本申请提供了一种共享内存泄漏的提醒方法,可在接收到目标进程成功启动的消息后,通过对目标进程的地址空间进行监测,以获取目标进程附接各共享内存所占用的地址空间的大小,以及所述目标进程附接的共享内存的信息,并可根据目标进程附接各共享内存所占用的地址空间的大小,和/或目标进程附接的共享内存的信息,判断目标进程是否存在共享内存泄漏,若存在共享内存泄漏,则可自动进行提醒。
与现有技术相比,一方面,本申请可自动对目标进程附接共享内存的情况进行监测,以判断目标进程是否存在共享内存泄漏,从而可无需通过人工查看共享内存使用情况表或目标进程的地址空间信息表等,查找是否存在共享内存泄漏,从而可节省查找共享内存泄漏的耗时以及人力。另一方面,本申请还可在发现共享内存泄漏时,自动进行提醒,从而可使系统管理员能及时发现共享内存泄漏。
下面将结合具体实施例对本申请的实现过程进行描述。
请参考图1,图1所示为本申请实施例示出的一种共享内存泄漏的提醒方法的流程图,该方法可以包括以下步骤:
S101,在接收到目标进程成功启动的消息后,获取所述目标进程初始状态下的空闲地址空间的大小。
在本申请实施例中,操作系统启动后,可启动一个共享内存监测任务,该监测任务可根据预设的待监测进程的清单,对待监测的进程进行监测。上述待监测进程的清单可由系统管理员进行设置,决定需要对哪些进程进行共享内存泄漏的监测。
待监测进程启动时,可向上述监测任务发送成功启动的消息,监测任务接收到该消息后,将该待监测进程作为目标进程,可进一步读取该目标进程当前的地址空间信息表,根据该目标进程的地址空间信息表,获取该目标进程在启动时的空闲地址空间的大小,即该目标进程初始状态下的空闲地址空间的大小(后续简称为初始空闲地址空间的大小)。
其中,针对目标进程的初始空闲地址空间的大小的计算,可以下述的目标进程的地址空间信息表为例进行详细描述。
上述地址空间信息表中,[heap]表示堆内存,[stack]表示栈内存,中间区域是内存映射区,其中,包含“SYSV”的行表示附接了共享内存的地址段,0x0065b716、0x0065b717等为共享内存的key值,即共享内存在系统中的编号。
根据上述地址空间信息表中内存映射区的首地址0x15550000,与栈内存区的末地址0x3f8c1000,将上述两地址值相减,可得到栈内存区与内存映射区这两个区域的地址空间大小,再将这两个区域的地址空间大小减去已附接共享内存所占用的地址空间大小,即可得到该目标进程的初始空闲地址空间的大小。
其中,针对附接共享内存所占用的地址空间大小的计算,以上述地址空间信息表中包含“SYSV0065b716”的行为例进行说明。根据上述地址空间信息表可知,附接key值0x0065b716的共享内存所占用的地址空间大小为包含“SYSV0065b716”的行的末地址与首地址的差值,即地址值0x18008000与0x17e85000的差值,约1.5M,即附接key值0x0065b716的共享内存所占用的地址空间大小约为1.5M。
在获取到目标进程的初始空闲地址空间的大小后,进一步地,还可以以目标进程的ID为标识记录目标进程的初始空闲地址空间的大小。以目标进程A和B为例,操作系统记录的目标进程A和B的初始空闲地址空间的大小,可如表1所示。
目标进程ID | 初始空闲地址空间大小 |
A | 50M |
B | 50M |
表1
需要说明的是,表1仅为示例性说明,还可在表1中记录目标进程的进程名等信息,此处不作限定。
S102,对目标进程的地址空间进行监测,并获取所述目标进程附接各共享内存所占用的地址空间的大小,以及所述目标进程附接的共享内存的信息。
在本申请实施例中,获取目标进程的初始空闲地址空间的大小后,可继续对目标进程的地址空间进行监测,在监测过程中可周期性对目标进程的地址空间进行扫描,获取目标进程生命周期中附接各共享内存所占用的地址空间大小。
其中,上述扫描周期可根据实际需求进行灵活配置,例如,某一时段并未监测到共享内存泄漏的问题,则下一时段可将该扫描周期配置为较大值,也就是说,在共享内存泄漏的问题不严重的情况下,可以间隔较长时间对目标进程的地址空间进行一次扫描,以减少系统资源的消耗;而若某一时段内,共享内存泄漏的问题较多,则下一时段可将该该扫描周期配置为较小值,即相同时段内的扫描次数增加,以及时发现共享内存泄漏的问题。
仍以上述地址空间信息表为例,对如何获取目标进程附接各共享内存所占用的地址空间大小进行描述。
由上述地址空间信息表可知,当前目标进程的地址空间中附接的共享内存有key值为0x0065b716、key值为0x0065b717的共享内存,key值为0x0065b716的共享内存所占用的地址空间大小可根据地址值0x18008000与0x17e85000的差值得到,约1.5M;因key值为0x0065b717的共享内存被该目标进程附接两次,因此该目标进程附接key值为0x0065b717的共享内存所占用的地址空间大小由两部分组成,即可根据地址值0x15572000与0x15571000的差值以及0x17e85000与0x17e84000的差值之和得到,为8K。
另外,还可将所获取的目标进程附接各共享内存所占用的地址空间的大小进一步记录在表1中,可以表2示例性表示某时刻所记录的地址空间信息。
表2
除对目标进程的地址空间进行监测外,还可进一步监测并记录共享内存的信息,例如记录被附接的共享内存的key值、共享内存的大小、附接该共享内存的进程ID或线程ID以及该共享内存被附接的次数等。
其中,操作系统可在附接共享内存的接口函数内监测共享内存的附接情况,记录被附接的共享内存的信息。当监测到某一共享内存被某一目标进程附接时,可查询是否已记录有该共享内存及该目标进程的共享内存的信息,若有,则可增加该共享内存的信息中被附接的次数;若无,则可添加该共享内存及该目标进程的共享内存的信息。
例如,可假设当前已记录的共享内存的信息如表3所示,且假设目标进程A为多线程的进程,目标进程B为单线程的进程。
共享内存key值 | 共享内存大小 | 目标进程ID | 线程ID | 被附接的次数 |
0x0065b716 | 1.5M | A | A1 | 6 |
0x0065b717 | 4字节 | B | B | 2 |
0x0065b717 | 4字节 | A | A2 | 2 |
0x0065b716 | 1.5M | B | B | 3 |
表3
当监测到key值为0x0065b716的共享内存被进程A的A1线程附接一次时,查询表3可知,当前表3已记录有key值为0x0065b716、线程ID为A1的共享内存的信息,此时可将表3中key值为0x0065b716、线程ID为A1的共享内存的信息中被附接的次数由3增加至4。而在监测到key值为0x0065b716的共享内存被进程C附接一次,查询表3可知,当前未记录有key值为0x0065b716的共享内存的信息,则此时可在表3中添加key值为0x0065b716、目标进程ID为C的共享内存的信息,并将被附接的次数记为1。
另外,还可在监测到key值为0x0065b716的共享内存被进程A的A1线程解除一次附接时,将表3中对应的共享内存信息中被附接的次数由3减至2。
同样需要说明的是,表3仅为示例性说明,也可以链表的形式存储上述共享内存的信息,此处不作限定。
此外,还需要说明的是,当操作系统监测到某目标进程结束时,还可清除表2及表3中该目标进程对应的数据,从而可节省存储空间。
S103,判断所述目标进程是否存在共享内存泄漏。
S104,进行共享内存泄漏的提醒。
在本申请实施例中,在对上述目标进程的地址空间以及附接的共享内存的信息进行监测的过程中,还可进一步根据所监测到的上述表2和表3中的信息,判断目标进程是否存在共享内存泄漏。其中,操作系统可根据下述三种情况中任一种进行共享内存泄漏的判断。
一种情况为,某一时刻,当监测到表2中某目标进程附接共享内存占用的地址空间的大小与该目标进程的初始空闲地址空间的大小的比值大于等于预设比值时,可确定当前该目标进程存在共享内存泄漏。其中,上述预设比值可由管理员根据实际需求进行配置。如,可配置为1:2,或者以百分比形式配置为50%,此处不作限定。
例如,当监测到表2中目标进程A附接Key值为0x0065b716、0x0065b717的共享内存占用的总地址空间的大小与目标进程A的初始空闲地址空间50M相比,两者的比值大于预设比值1:2,由此便可确定目标进程A存在共享内存泄漏。
第二种情况为,对于多线程的目标进程而言,某一时刻,当监测到表3中某一共享内存被任一线程附接的次数大于预设次数时,可确定该线程对应的目标进程存在共享内存泄漏。其中,上述预设次数也可根据实际需求进行配置,如,可将预设次数配置为5。
例如,当监测到表3中key值为0x0065b716的共享内存被A1线程附接的次数为6,大于预设次数5时,可确定目标进程A存在共享内存泄漏。
第三种情况为,某一时刻,当监测到表3中某一共享内存被目标进程附接的次数大于预设次数,且监测到表2中上述目标进程附接该共享内存所占用的地址空间的大小与目标进程的初始空闲地址空间的大小的比值大于等于预设比值时,可确定该目标进程存在共享内存泄漏。其中,此处的预设次数、预设比值与上述两种情况中的预设次数、预设比值可以不同,如,此处可配置预设次数为1,预设比值为1:10或10%。
例如,当监测到表3中key值为0x0065b716的共享内存被目标进程B附接的次数大于预设次数1,表2中目标进程B附接key值为0x0065b716的共享内存占用的地址空间大小为9M,与目标进程B的初始空闲地址空间50M相比,两者的比值大于1:10,由此可确定目标进程B存在共享内存泄漏。
在本申请实施例中,当确定目标进程存在共享内存泄漏后,还可进一步进行共享内存泄漏的提醒,以告知系统管理员当前目标进程存在共享内存泄漏,以使系统管理员能及时发现并解决共享内存泄漏的问题。其中,提醒的方式可以是发送警告日志,或者发送TRAP消息等,此处不作限定。
此外,在进行提醒的同时,还可列出存在共享内存泄漏的目标进程的进程名、进程ID或线程ID,以及所附接的共享内存的大小、key值和被附接的次数等,以使系统管理员根据上述信息,即可明确哪个目标进程存在共享内存泄漏,从而可及时对该目标进程的源代码进行修改,以解决共享内存泄漏的问题,从而可减轻管理员手动查找共享内存泄漏的工作量。
在本申请中,可在接收到目标进程成功启动的消息后,通过对目标进程的地址空间进行监测,以获取目标进程附接各共享内存所占用的地址空间的大小,以及所述目标进程附接的共享内存的信息,并可根据目标进程附接各共享内存所占用的地址空间的大小,和/或目标进程附接的共享内存的信息,判断目标进程是否存在共享内存泄漏,若存在共享内存泄漏,则可自动进行提醒。
与现有技术相比,一方面,本申请可自动对目标进程附接共享内存的情况进行监测,以判断目标进程是否存在共享内存泄漏,从而可无需通过人工查看共享内存使用情况表或地址空间信息表等,查找是否存在共享内存泄漏,从而可节省查找共享内存的耗时以及人力。另一方面,本申请还可在发现共享内存泄漏时,自动进行提醒,从而可使系统管理员能及时发现共享内存泄漏。
与前述一种共享内存泄漏的提醒方法的实施例相对应,本申请还提供了一种共享内存泄漏的提醒装置的实施例。
本申请一种共享内存泄漏的提醒装置的实施例可以应用在网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在网络设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图2所示,为本申请一种共享内存泄漏的提醒装置所在网络设备的一种硬件结构图,除了图2所示的处理器、内存、网络出接口、以及非易失性存储器之外,实施例中装置所在的网络设备通常根据该网络设备的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图3,图3是本申请实施例示出的一种共享内存泄漏的提醒装置的结构示意图,该装置可以包括:监测模块320、第一获取模块330、判断模块340、提醒模块350。
其中,监测模块320,用于在接收到目标进程成功启动的消息后,对所述目标进程的地址空间进行监测;
第一获取模块330,用于根据监测结果,获取所述地址空间中所述目标进程附接各共享内存所占用的地址空间的大小,以及所述目标进程附接的共享内存的信息;
判断模块340,用于根据所述目标进程附接各共享内存所占用的地址空间的大小,和/或所述目标进程附接的共享内存的信息,判断所述目标进程是否存在共享内存泄漏;
提醒模块350,用于在确定所述目标进程存在共享内存泄漏时,进行提醒。
在本申请实施例中,所述装置还包括:
第二获取模块310,用于在接收到目标进程成功启动的消息后,获取所述目标进程初始状态下的空闲地址空间的大小;
所述判断模块340,具体用于:
当所述目标进程附接共享内存所占用的总地址空间的大小与所述空闲地址空间的大小的比值大于等于预设比值时,确定所述目标进程存在共享内存泄漏。
在本申请实施例中,所述目标进程附接的共享内存的信息包括共享内存被所述目标进程或所述目标进程的线程附接的次数;
所述判断模块340,具体用于:
当任一共享内存被所述目标进程的任一线程附接的次数大于次数阈值时,确定所述目标进程存在共享内存泄漏。
在本申请实施例中,所述装置还包括:
第二获取模块310,用于在接收到目标进程成功启动的消息后,获取所述目标进程初始状态下的空闲地址空间的大小;
所述判断模块340,具体用于:
当任一共享内存被所述目标进程附接的次数大于预设次数,且附接所述共享内存所占用的地址空间的大小与所述空闲地址空间的大小的比值大于等于预设比值时,确定所述目标进程存在共享内存泄漏。
在本申请实施例中,所述提醒模块350,具体用于:
发送警告日志或发送TRAP消息;
所述目标进程附接的共享内存的信息,还包括:
所述目标进程的ID、所述目标进程的线程的ID、共享内存的大小及共享内存的key值。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种共享内存泄漏的提醒方法,其特征在于,包括:
在接收到目标进程成功启动的消息后,对所述目标进程的地址空间进行监测;
根据监测结果,获取所述地址空间中所述目标进程附接各共享内存所占用的地址空间的大小,以及所述目标进程附接的共享内存的信息;
根据所述目标进程附接各共享内存所占用的地址空间的大小,和/或所述目标进程附接的共享内存的信息,判断所述目标进程是否存在共享内存泄漏;
若是,则进行提醒。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到目标进程成功启动的消息后,获取所述目标进程初始状态下的空闲地址空间的大小;
所述根据所述目标进程附接各共享内存所占用的地址空间的大小,和/或所述目标进程附接的共享内存的信息,判断所述目标进程是否存在共享内存泄漏,包括:
当所述目标进程附接共享内存所占用的总地址空间的大小与所述空闲地址空间的大小的比值大于等于预设比值时,确定所述目标进程存在共享内存泄漏。
3.根据权利要求1所述的方法,其特征在于,所述目标进程附接的共享内存的信息包括共享内存被所述目标进程或所述目标进程的线程附接的次数;
所述根据所述目标进程附接共享内存所占用的地址空间的大小,和/或所述目标进程附接的共享内存的信息,判断所述目标进程是否存在共享内存泄漏,包括:
当任一共享内存被所述目标进程的任一线程附接的次数大于次数阈值时,确定所述目标进程存在共享内存泄漏。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到目标进程成功启动的消息后,获取所述目标进程初始状态下的空闲地址空间的大小;
所述目标进程附接的共享内存的信息包括共享内存被所述目标进程或所述目标进程的线程附接的次数;
所述根据所述目标进程附接共享内存所占用的地址空间的大小,和/或所述目标进程附接的共享内存的信息,判断所述目标进程是否存在共享内存泄漏,包括:
当任一共享内存被所述目标进程附接的次数大于预设次数,且附接所述共享内存所占用的地址空间的大小与所述空闲地址空间的大小的比值大于等于预设比值时,确定所述目标进程存在共享内存泄漏。
5.根据权利要求1所述的方法,其特征在于,所述进行提醒,包括:
发送警告日志或发送TRAP消息;
所述目标进程附接的共享内存的信息,还包括:
所述目标进程的ID、所述目标进程的线程的ID、共享内存的大小及共享内存的key值。
6.一种共享内存泄漏的提醒装置,其特征在于,包括:
监测模块,用于在接收到目标进程成功启动的消息后,对所述目标进程的地址空间进行监测;
第一获取模块,用于根据监测结果,获取所述地址空间中所述目标进程附接各共享内存所占用的地址空间的大小,以及所述目标进程附接的共享内存的信息;
判断模块,用于根据所述目标进程附接各共享内存所占用的地址空间的大小,和/或所述目标进程附接的共享内存的信息,判断所述目标进程是否存在共享内存泄漏;
提醒模块,用于在确定所述目标进程存在共享内存泄漏时,进行提醒。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于在接收到目标进程成功启动的消息后,获取所述目标进程初始状态下的空闲地址空间的大小;
所述判断模块,具体用于:
当所述目标进程附接共享内存所占用的总地址空间的大小与所述空闲地址空间的大小的比值大于等于预设比值时,确定所述目标进程存在共享内存泄漏。
8.根据权利要求6所述的装置,其特征在于,所述目标进程附接的共享内存的信息包括共享内存被所述目标进程或所述目标进程的线程附接的次数;
所述判断模块,具体用于:
当任一共享内存被所述目标进程的任一线程附接的次数大于次数阈值时,确定所述目标进程存在共享内存泄漏。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于在接收到目标进程成功启动的消息后,获取所述目标进程初始状态下的空闲地址空间的大小;
所述判断模块,具体用于:
当任一共享内存被所述目标进程附接的次数大于预设次数,且附接所述共享内存所占用的地址空间的大小与所述空闲地址空间的大小的比值大于等于预设比值时,确定所述目标进程存在共享内存泄漏。
10.根据权利要求6所述的装置,其特征在于,所述提醒模块,具体用于:
发送警告日志或发送TRAP消息;
所述目标进程附接的共享内存的信息,还包括:
所述目标进程的ID、所述目标进程的线程的ID、共享内存的大小及共享内存的key值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810047922.6A CN108334435B (zh) | 2018-01-18 | 2018-01-18 | 一种共享内存泄漏的提醒方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810047922.6A CN108334435B (zh) | 2018-01-18 | 2018-01-18 | 一种共享内存泄漏的提醒方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108334435A true CN108334435A (zh) | 2018-07-27 |
CN108334435B CN108334435B (zh) | 2021-12-24 |
Family
ID=62925279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810047922.6A Active CN108334435B (zh) | 2018-01-18 | 2018-01-18 | 一种共享内存泄漏的提醒方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108334435B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144872A (zh) * | 2018-08-20 | 2019-01-04 | 杭州迪普科技股份有限公司 | 内存泄漏的检测方法、装置、终端设备及可读存储介质 |
CN109522122A (zh) * | 2018-11-14 | 2019-03-26 | 郑州云海信息技术有限公司 | 一种内存管理方法、系统、装置及计算机可读存储介质 |
CN116302617A (zh) * | 2023-05-12 | 2023-06-23 | 苏州浪潮智能科技有限公司 | 共享内存的方法、通信方法、嵌入式系统以及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470632A (zh) * | 2007-12-24 | 2009-07-01 | 华为软件技术有限公司 | 共享内存管理方法及装置 |
CN101908018A (zh) * | 2010-07-20 | 2010-12-08 | 北京海泰方圆科技有限公司 | 一种判断内存泄露的系统及方法 |
JP2014215812A (ja) * | 2013-04-25 | 2014-11-17 | 船井電機株式会社 | ソースコード解析装置、ソースコード解析方法、及びソースコード解析プログラム |
CN104182320A (zh) * | 2013-05-23 | 2014-12-03 | 联想(北京)有限公司 | 一种监控内存泄漏的方法及装置 |
CN106610892A (zh) * | 2015-10-23 | 2017-05-03 | 腾讯科技(深圳)有限公司 | 内存泄漏检测方法和装置 |
CN107066390A (zh) * | 2017-04-24 | 2017-08-18 | 许继集团有限公司 | 一种动态内存泄漏检测方法及系统 |
CN107423220A (zh) * | 2017-08-04 | 2017-12-01 | 青岛海信宽带多媒体技术有限公司 | 内存泄露的检测方法及装置、电子设备 |
-
2018
- 2018-01-18 CN CN201810047922.6A patent/CN108334435B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470632A (zh) * | 2007-12-24 | 2009-07-01 | 华为软件技术有限公司 | 共享内存管理方法及装置 |
CN101908018A (zh) * | 2010-07-20 | 2010-12-08 | 北京海泰方圆科技有限公司 | 一种判断内存泄露的系统及方法 |
JP2014215812A (ja) * | 2013-04-25 | 2014-11-17 | 船井電機株式会社 | ソースコード解析装置、ソースコード解析方法、及びソースコード解析プログラム |
CN104182320A (zh) * | 2013-05-23 | 2014-12-03 | 联想(北京)有限公司 | 一种监控内存泄漏的方法及装置 |
CN106610892A (zh) * | 2015-10-23 | 2017-05-03 | 腾讯科技(深圳)有限公司 | 内存泄漏检测方法和装置 |
CN107066390A (zh) * | 2017-04-24 | 2017-08-18 | 许继集团有限公司 | 一种动态内存泄漏检测方法及系统 |
CN107423220A (zh) * | 2017-08-04 | 2017-12-01 | 青岛海信宽带多媒体技术有限公司 | 内存泄露的检测方法及装置、电子设备 |
Non-Patent Citations (3)
Title |
---|
全国计算机职业技能教材编写委员会: "《计算机网络管理员 初级》", 31 December 2009 * |
周立功等: "《嵌入式Linux开发教程 下册》", 31 December 2016 * |
杨峰: "基于Linux内核的动态内存管理机制的实现", 《计算机工程》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144872A (zh) * | 2018-08-20 | 2019-01-04 | 杭州迪普科技股份有限公司 | 内存泄漏的检测方法、装置、终端设备及可读存储介质 |
CN109522122A (zh) * | 2018-11-14 | 2019-03-26 | 郑州云海信息技术有限公司 | 一种内存管理方法、系统、装置及计算机可读存储介质 |
CN109522122B (zh) * | 2018-11-14 | 2021-12-17 | 郑州云海信息技术有限公司 | 一种内存管理方法、系统、装置及计算机可读存储介质 |
CN116302617A (zh) * | 2023-05-12 | 2023-06-23 | 苏州浪潮智能科技有限公司 | 共享内存的方法、通信方法、嵌入式系统以及电子设备 |
CN116302617B (zh) * | 2023-05-12 | 2023-08-04 | 苏州浪潮智能科技有限公司 | 共享内存的方法、通信方法、嵌入式系统以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN108334435B (zh) | 2021-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7743380B2 (en) | Monitoring clustered software applications | |
US8412899B2 (en) | Real time backup storage node assignment | |
EP3282356A1 (en) | Container monitoring configuration deployment | |
CN106936618B (zh) | 一种数据采集方法和系统 | |
CN108334435A (zh) | 一种共享内存泄漏的提醒方法及装置 | |
CN106547612B (zh) | 一种多任务处理方法及装置 | |
CN111880936A (zh) | 资源调度方法、装置、容器集群、计算机设备和存储介质 | |
CN104836819A (zh) | 动态负载均衡的方法、系统及监控调度设备 | |
WO2006097512A1 (en) | Resource allocation in computing systems | |
CN114090176A (zh) | 一种基于Kubernetes的容器调度方法 | |
CN110941495B (zh) | 一种基于图着色的容器协同编排方法 | |
WO2018196462A1 (zh) | 资源调度装置、资源调度系统和资源调度方法 | |
CN108804207A (zh) | 一种基于Android系统的进程管控方法 | |
CN111628893A (zh) | 分布式存储系统的故障处理方法及装置、电子设备 | |
CN114884838A (zh) | Kubernetes组件的监控方法及服务器 | |
CN105988921A (zh) | 一种内存越界的检测方法及装置 | |
EP3208709A1 (en) | Batch processing method and device for system invocation commands | |
CN105760251B (zh) | 一种备份数据的方法和装置 | |
WO2017074452A1 (en) | Fault representation of computing infrastructures | |
CN111163245B (zh) | 网络硬盘录像机中添加网络摄像机的方法及装置 | |
US10536394B2 (en) | Resource allocation | |
CN106021026B (zh) | 一种备份方法及装置 | |
WO2012090290A1 (ja) | メモリダンプ機能を有する情報処理装置、メモリダンプ方法、およびメモリダンププログラム | |
CN109981782B (zh) | 用于集群脑裂的远端存储异常处理方法及系统 | |
CN105450679A (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 |