CN104808985A - 应用程序中对象的管理方法及装置 - Google Patents

应用程序中对象的管理方法及装置 Download PDF

Info

Publication number
CN104808985A
CN104808985A CN201510152992.4A CN201510152992A CN104808985A CN 104808985 A CN104808985 A CN 104808985A CN 201510152992 A CN201510152992 A CN 201510152992A CN 104808985 A CN104808985 A CN 104808985A
Authority
CN
China
Prior art keywords
tracing object
symbol
list item
establishment
heavy duty
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
Application number
CN201510152992.4A
Other languages
English (en)
Other versions
CN104808985B (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.)
Beijing Xiaomi Technology Co Ltd
Xiaomi Inc
Original Assignee
Xiaomi Inc
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 Xiaomi Inc filed Critical Xiaomi Inc
Priority to CN201510152992.4A priority Critical patent/CN104808985B/zh
Publication of CN104808985A publication Critical patent/CN104808985A/zh
Application granted granted Critical
Publication of CN104808985B publication Critical patent/CN104808985B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本公开是关于一种应用程序中对象的管理方法及装置,属于计算机技术领域。该方法包括:在待创建的追踪对象所属的类中,重载创建操作符;基于重载后的创建操作符,创建追踪对象;在全局列表中为追踪对象添加位置表项,位置表项中至少包括追踪对象的创建位置参数。本公开在创建待追踪对象时,在全局列表中为追踪对象添加位置表项,根据位置表项中的创建位置参数,可快速、准确地定位该对象在程序源文件中的创建位置,进而通过更改该对象的创建代码,使该对象占用的内存被释放,保证了应用程序能够顺利运行。

Description

应用程序中对象的管理方法及装置
技术领域
本公开涉及计算机技术领域,尤其涉及一种应用程序中对象的管理方法及装置。
背景技术
随着计算机技术的发展,为了实现应用程序的各种功能,应用程序管理员会使用C++在应用程序中创建各种对象。由于所创建的对象影响着应用程序的性能,因此,如何对应用程序中的对象进行管理,成为本领域技术人员较为关注的问题。
目前,对于C++编写的应用程序,需要应用程序管理员手动地对所创建的对象进行管理。当任一对象在应用程序中不再被应用,但该应用程序因创建代码出现错误,导致该应用程序不能被释放,此时应用程序管理员需要先找到该对象的创建位置,进而通过修改该对象创建位置上的代码,使得该对象可释放占用的内存。然而,当应用程序管理员无法找到该对象的创建位置时,该对象所占用的内存将会一直被占用,最终导致应用程序无法运行。
公开内容
为克服相关技术中存在的问题,本公开提供一种应用程序中对象的管理方法及装置。
根据本公开实施例的第一方面,提供一种应用程序中对象的管理方法,所述方法包括:
在待创建的追踪对象所属的类中,重载创建操作符;
基于重载后的创建操作符,创建所述追踪对象;
在全局列表中为所述追踪对象添加位置表项,所述位置表项中至少包括所述追踪对象的创建位置参数。
可选地,所述追踪对象的创建位置参数至少包括所述追踪对象在程序源文件中的文件名称、函数名称及行号。
可选地,所述基于重载后的创建操作符,创建所述追踪对象,包括:
获取所述追踪对象的创建位置参数对应的宏关键字;
将所述创建位置参数对应的宏关键字添加到所述重载后的创建操作符的输入参数中,得到新的输入参数;
基于所述新的输入参数,调用重载后的创建操作符,再调用全局创建操作符,创建所述追踪对象。
可选地,所述方法还包括:
在待创建的追踪对象所属的类中,重载释放操作符;
基于重载后的释放操作符,删除所述追踪对象对应的位置表项。
可选地,所述基于重载后的释放操作符,删除所述追踪对象对应的位置表项,包括:
调用重载后的释放操作符,调用全局释放操作符,再调用所述追踪对象所属的类对应的析构函数;
根据所述析构函数,将所述追踪对象对应的位置表项在所述全局列表中删除。
可选地,所述方法还包括:
为创建位置表项操作与删除位置表项操作设置互斥锁,使得所述创建位置表项操作与删除位置表项操作不能同时进行。
可选地,所述方法还包括:
当检测到所述追踪对象不再被应用,根据所述位置表项中的创建位置参数,定位所述追踪对象在程序源文件中的创建位置。
根据本公开实施例的第二方面,提供一种应用程序中对象的管理装置,所述装置包括:
第一重载模块,用于在待创建的追踪对象所属的类中,重载创建操作符;
创建模块,用于基于重载后的创建操作符,创建所述追踪对象;
添加模块,用于在全局列表中为所述追踪对象添加位置表项,所述位置表项中至少包括所述追踪对象的创建位置参数。
可选地,所述添加模块在全局列表中为所述追踪对象添加的位置表项中的创建位置参数至少包括所述追踪对象在程序源文件中的文件名称、函数名称及行号。
可选地,所述创建模块,用于获取所述追踪对象的创建位置参数对应的宏关键字;将所述创建位置参数对应的宏关键字添加到所述重载后的创建操作符的输入参数中,得到新的输入参数;基于所述新的输入参数,调用重载后的创建操作符,再调用全局创建操作符,创建所述追踪对象。
可选地,所述装置还包括:
第二重载模块,用于在待创建的追踪对象所属的类中,重载释放操作符;
删除模块,用于基于重载后的释放操作符,删除所述追踪对象对应的位置表项。
可选地,所述删除模块,用于调用重载后的释放操作符,调用全局释放操作符,再调用所述追踪对象所属的类对应的析构函数;根据所述析构函数,将所述追踪对象对应的位置表项在所述全局列表中删除。
可选地,所述装置还包括:
设置模块,用于为创建位置表项操作与删除位置表项操作设置互斥锁,使得所述创建位置表项操作与删除位置表项操作不能同时进行。
可选地,所述装置还包括:
定位模块,用于当检测到所述追踪对象不再被应用,根据所述位置表项中的创建位置参数,定位所述追踪对象在程序源文件中的创建位置。
根据本公开实施例的第三方面,提供一种应用程序中对象的管理装置,包括:
处理器;
用于存储处理器可执行的指令;
其中,所述处理器被配置为:
在待创建的追踪对象所属的类中,重载创建操作符;
基于重载后的创建操作符,创建所述追踪对象;
在全局列表中为所述追踪对象添加位置表项,所述位置表项中至少包括所述追踪对象的创建位置参数。
本公开的实施例提供的技术方案可以包括以下有益效果:
在创建待追踪对象时,在全局列表中为追踪对象添加位置表项,并在检测到该对象不再被应用时,根据位置表项中的创建位置参数,可快速、准确地定位该对象在程序源文件中的创建位置,进而通过更改该对象的创建代码,使该对象占用的内存被释放,保证了应用程序能够顺利运行。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种应用程序中对象的管理方法的流程图。
图2是根据一示例性实施例示出的一种应用程序中对象的管理方法的流程图。
图3是根据一示例性实施例示出的一种应用程序中对象的管理装置的结构示意图。
图4是根据一示例性实施例示出的一种应用程序中对象的管理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种应用程序中对象的管理方法的流程图,如图1所示,应用程序中对象的管理方法用于服务器中,包括以下步骤。
在步骤101中,在待创建的追踪对象所属的类中,重载创建操作符。
在步骤102中,基于重载后的创建操作符,创建追踪对象。
在步骤103中,在全局列表中为追踪对象添加位置表项,位置表项中至少包括追踪对象的创建位置参数。
本公开实施例提供的方法,在创建待追踪对象时,在全局列表中为追踪对象添加位置表项,根据位置表项中的创建位置参数,可快速、准确地定位该对象在程序源文件中的创建位置,进而通过更改该对象的创建代码,使该对象占用的内存被释放,保证了应用程序能够顺利运行。
在本公开的另一个实施例中,追踪对象的创建位置参数至少包括追踪对象在程序源文件中的文件名称、函数名称及行号。
在公开的另一个实施例中,基于重载后的创建操作符,创建追踪对象,包括:
获取追踪对象的创建位置参数对应的宏关键字;
将创建位置参数对应的宏关键字添加到重载后的创建操作符的输入参数中,得到新的输入参数;
基于新的输入参数,调用重载后的创建操作符,再调用全局创建操作符,创建追踪对象。
在本公开的另一个实施例中,该方法还包括:
在待创建的追踪对象所属的类中,重载释放操作符;
基于重载后的释放操作符,删除所述追踪对象对应的位置表项。
在本公开的另一个实施例中,基于重载后的释放操作符,删除追踪对象对应的位置表项,包括:
调用重载后的释放操作符,调用全局释放操作符,再调用追踪对象所属的类对应的析构函数;
根据析构函数,将追踪对象对应的位置表项在全局列表中删除。
在本公开的另一个实施例中,该方法还包括:
为创建位置表项操作与删除位置表项操作设置互斥锁,使得创建位置表项操作与删除位置表项操作不能同时进行。
在本公开的另一个实施例中,该方法还包括:
当检测到追踪对象不再被应用,根据位置表项中的创建位置参数,定位追踪对象在程序源文件中的创建位置。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
图2是根据一示例性实施例示出的一种应用程序中对象的管理方法的流程图,如图2所示,应用程序中对象的管理方法用于服务器中,包括以下步骤。
在步骤201中,服务器在待创建的追踪对象所属的类中,重载创建操作符和释放操作符。
在计算机领域,类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。对象是具有类类型的变量。类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。重载为使函数、运算符等处理不同类型的数据或接收不同数据参数操作。
为了实现应用程序的各种功能,服务器会根据需要在应用程序中创建各种对象。由于每个对象在应用程序的运行过程中所执行的功能是不同的,因此,每个对象的使用时长也是不同,有些对象在应用程序运行的整个过程中都需要被使用,有些应用程序仅在应用程序运行的指定阶段被使用。由于应用程序中创建的每个对象都会占据终端的内存,而终端的内存是有限的,当终端剩余的内存较小时,应用程序的运行时间较长,性能相对较差;当终端剩余的内存较大时,应用程序的运行时间较短,性能相对较佳。因此,为了提高终端的性能,确保应用程序能够顺利运行,本实施例提供的方法,在对应用程序中的对象进行管理之前,需要先确定每个对象的运行时长,并根据每个对象的运行时长,确定需要待创建的追踪对象。
基于追踪对象的属性特征,服务器可确定出每个待创建的追踪对象所属的类,进而在每个待创建的追踪对象所属的类中,为每个追踪对象重载一个创建操作符和一个释放操作符。其中,创建操作符可以是new操作符,用于创建新的对象,为创建的对象分配内存。释放操作符可以为delete操作符,用于释放任一对象所占用的内存。
在本实施例中,当多个待创建的追踪对象具有一个共同的祖先类,在为每个追踪对象重载一个创建操作符和一个释放操作符时,只需在多个待创建的追踪对象的共同祖先类中重载一个创建操作符和释放操作符即可。
在步骤202中,基于重载后的创建操作符,服务器创建追踪对象。
对于任一个待创建的追踪对象,在其所属的类中,重载创建操作符和释放操作符之后,服务器即可基于重载后的创建操作符,执行创建追踪对象的操作。
基于重载后的创建操作符,服务器创建追踪对象的具体操作,参见下述(1)~(3):
(1)、服务器获取追踪对象的创建位置参数对应的宏关键字。
其中,创建位置参数用于指示追踪对象的创建位置。位置参数至少包括追踪对象在程序源文件中的文件名称、函数名称及行号等。关于服务器获取待追踪对象的创建位置参数的方式,包括但不限于:应用程序管理员根据追踪对象的功能,在应用程序管理界面上输入相应的操作代码,服务器获取应用程序管理员的输入的操作代码,并将获取到的操作代码作为追踪对象的创建位置参数。
基于获取到的位置参数,服务器每次在创建位置待追踪的对象时,都会获取这些位置参数对应的宏关键字。例如,用_FILE_表示代码文件名称,用_PRETTY_FUNCTION_表示函数名称,用_LINE_表示文件行号等。
(2)、服务器将位置参数添加到重载后的创建操作符的输入参数中,得到新的输入参数。
在创建追踪对象时,服务器会将创建位置参数添加到重载后的创建操作符的输入参数中,得到新的输入参数。以用_FILE_表示代码文件名称,用_PRETTY_FUNCTION_表示函数名称,用_LINE_表示文件行号为例,了得到新的输入参数为MyClass*obj=new(_FILE_,_PRETTY_FUNCTION_,_LINE_)MyClass()。
(3)、基于新的输入参数,服务器调用重载后的创建操作符,再调用全局创建操作符,创建追踪对象。
其中,全局创建操作符可为应用程序中的类分配内存。对于任一待创建的对象,如果未为其重载创建操作符,则在创建该对象时,服务器将默认调用全局创建操作符为其分配内存,并创建该对象;若为其重载了创建操作符,则在创建该对象时,服务器需要先调用重载后的创建操作符,再调用全局创建操作符,进而创建追踪对象。
在步骤203中,服务器在全局列表中为追踪对象添加位置表项。
为了便于对应用程序进行维护,以便于快速地定位追踪对象,当追踪对象被创建之后,服务器还将为该对象在全局列表中添加一个位置表项。其中,全局列表中记录着应用程序中每个对象的创建时间、释放时间、创建位置参数、内存地址、占用的内存大小等。
除了上述在全局列表中为该追踪对象创建一个位置表项外,服务器还可在该追踪对象所属的类列表中为该对象创建一个位置表项,当然,服务器还可在其他列表中,为该追踪对象创建一个位置表项,本实施例对此不作具体的限定。
对于该过程,典型的实现场景为全局列表、类列表等为哈希映射表,此时,创建的追踪对象的内存地址即为哈希映射表中的Key值,重载后的创建操作符把输入的创建位置参数的格式化为一个字符串,以该字符串为value值,以追踪对象的内存地址为Key,在全局列表中生成一个位置表项。
另外,如果终端的管理员想要获知当前为哪些对象分配了内存,终端管理员可向服务器发送查看指令,该查看指令中至少携带需要查看的对象的属性信息,如创建时间等,当接收到查看指令,服务器可从全局列表等中获取到相应的表项,并将获取到的表项输入到管理界面或指定文件中。
在步骤204中,当检测到追踪对象不再被应用,服务器根据位置表项中的创建位置参数,定位追踪对象在程序源文件中的创建位置。
关于检测追踪对象不再被应用的方式,包括但不限于:当应用程序在运行过程中,终端管理员发现某一对象不再被应用,终端管理员将向服务器发送通知消息,当接收到该通知消息,服务器将该应用程序作为不再被应用的对象。
由于追踪对象的位置表项中具有指示该追踪对象创建位置的创建位置参数,因此,当检测到追踪对象不再被应用,服务器可根据该追踪对象的创建位置位置参数,快速地定位该追踪对象在程序源文件中的创建位置。
在步骤205中,基于重载后的释放操作符,服务器删除追踪对象对应的位置表项。
为了避免不再被应用的对象占用终端的内存,当检测到追踪对象不再被应用,服务器将基于重载后的释放操作符,将该追踪对象对应的位置表项删除。具体执行时,可采用如下方式:
首先,服务器调用重载后的释放操作符,调用全局释放操作符,再调用追踪对象所属的类对应的析构函数。
在计算机领域,析构函数为与构造函数相反的函数,可在对象脱离作用域时,自动该将脱离对象删除。
其次,服务器根据析构函数,将追踪对象对应的位置表项在全局列表中删除。
另外,当检测到追踪对象所属的类对应的析构函数被调用之后,服务器可再次调用全局释放操作符,以通过该全局释放操作符,释放该追踪对象所占用的内存。
在计算机领域,不同操作应在不同的线程中执行,也即是,同一时间内,服务器只能执行一个操作。为此,服务器在对应用程序中的对象进行管理之前,还将为创建位置表项操作与删除位置表项操作设置互斥锁,该互斥锁可保证创建位置表项操作与删除位置表项操作不能同时进行。
本公开实施例提供的方法,在创建待追踪对象时,在全局列表中为追踪对象添加位置表项,根据位置表项中的创建位置参数,可快速、准确地定位该对象在程序源文件中的创建位置,进而通过更改该对象的创建代码,使该对象占用的内存被释放,保证了应用程序能够顺利运行。
图3是根据一示例性实施例示出的一种应用程序中对象的管理装置的结构示意图。参照图3,该装置包括:第一重载模块301、创建模块302及添加模块303。
该第一重载模块301被配置为在待创建的追踪对象所属的类中,重载创建操作符;
该创建模块302被配置为基于重载后的创建操作符,创建追踪对象;
该添加模块303被配置为在全局列表中为追踪对象添加位置表项,位置表项中至少包括追踪对象的创建位置参数。
该添加模块303被配置为在全局列表中为追踪对象添加的位置表项中的创建位置参数至少包括追踪对象在程序源文件中的文件名称、函数名称及行号。
在本公开的另一个实施例中,该创建模块302被配置为获取追踪对象的位置参数创建位置参数对应的宏关键字;将创建位置参数对应的宏关键字添加到重载后的创建操作符的输入参数中,得到新的输入参数;基于新的输入参数,调用重载后的创建操作符,再调用全局创建操作符,创建追踪对象。
在本公开的另一个实施例中,该装置还包括:第二重载模块和删除模块。
该第二重载模块被配置为在待创建的追踪对象所属的类中,重载释放操作符;
该删除模块被配置为基于重载后的释放操作符,删除追踪对象对应的位置表项。
在本公开的另一个实施例中,该删除模块被配置为调用重载后的释放操作符,调用全局释放操作符,再调用追踪对象所属的类对应的析构函数;根据析构函数,将追踪对象对应的位置表项在全局列表中删除。
在本公开的另一个实施例中,该装置还包括:设置模块。
该设置模块被配置为为创建位置表项操作与删除位置表项操作设置互斥锁,使得创建位置表项操作与删除位置表项操作不能同时进行。
在本公开的另一个实施例中,该装置还包括:定位模块。
该定位模块被配置为当检测到追踪对象不再被应用,根据所述位置表项中的创建位置参数,定位追踪对象在程序源文件中的创建位置。
本公开实施例提供的装置,在创建待追踪对象时,在全局列表中为追踪对象添加位置表项,根据位置表项中的创建位置参数,可快速、准确地定位该对象在程序源文件中的创建位置,进而通过更改该对象的创建代码,使该对象占用的内存被释放,保证了应用程序能够顺利运行。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图4是根据一示例性实施例示出的一种用于应用程序中对象的管理的装置400的框图。例如,装置400可以被提供为一服务器。参照图4,装置400包括处理组件422,其进一步包括一个或多个处理器,以及由存储器432所代表的存储器资源,用于存储可由处理组件422的执行的指令,例如应用程序。存储器432中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件422被配置为执行指令,以执行上述方法应用程序中对象的管理方法。
在待创建的追踪对象所属的类中,重载创建操作符;
基于重载后的创建操作符,创建追踪对象;
在全局列表中为追踪对象添加位置表项,所述位置表项中至少包括追踪对象的创建位置参数。
在本公开的另一个实施例中,追踪对象的创建位置参数至少包括追踪对象在程序源文件中的文件名称、函数名称及行号。
在本公开的另一个实施例中,基于重载后的创建操作符,创建追踪对象,包括:
获取追踪对象的创建位置参数对应的宏关键字;
将创建位置参数对应的宏关键字添加到重载后的创建操作符的输入参数中,得到新的输入参数;
基于所述新的输入参数,调用重载后的创建操作符,再调用全局创建操作符,创建追踪对象。
在本公开的另一个实施例中,该方法还包括:
在待创建的追踪对象所属的类中,重载释放操作符;
基于重载后的释放操作符,删除追踪对象对应的位置表项。
在本公开的另一个实施例中,基于重载后的释放操作符,删除追踪对象对应的位置表项,包括:
调用重载后的释放操作符,调用全局释放操作符,再调用追踪对象所属的类对应的析构函数;
根据析构函数,将追踪对象对应的位置表项在全局列表中删除。
在本公开的另一个实施例中,方法还包括:
为创建位置表项操作与删除位置表项操作设置互斥锁,使得创建位置表项操作与删除位置表项操作不能同时进行。
在本公开的另一个实施例中,方法还包括:
当检测到追踪对象不再被应用,根据位置表项中的创建位置参数,定位追踪对象在程序源文件中的创建位置。
装置400还可以包括一个电源组件426被配置为执行装置400的电源管理,一个有线或无线网络接口450被配置为将装置400连接到网络,和一个输入输出(I/O)接口458。装置400可以操作基于存储在存储器432的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本公开实施例提供的装置,在创建待追踪对象时,在全局列表中为追踪对象添加位置表项,根据位置表项中的创建位置参数,可快速、准确地定位该对象在程序源文件中的创建位置,进而通过更改该对象的创建代码,使该对象占用的内存被释放,保证了应用程序能够顺利运行。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (15)

1.一种应用程序中对象的管理方法,其特征在于,所述方法包括:
在待创建的追踪对象所属的类中,重载创建操作符;
基于重载后的创建操作符,创建所述追踪对象;
在全局列表中为所述追踪对象添加位置表项,所述位置表项中至少包括所述追踪对象的创建位置参数。
2.根据权利要求1所述的方法,其特征在于,所述追踪对象的创建位置参数至少包括所述追踪对象在程序源文件中的文件名称、函数名称及行号。
3.根据权利要求1所述的方法,其特征在于,所述基于重载后的创建操作符,创建追踪对象,包括:
获取所述追踪对象的创建位置参数对应的宏关键字;
将所述创建位置参数对应的宏关键字添加到所述重载后的创建操作符的输入参数中,得到新的输入参数;
基于所述新的输入参数,调用重载后的创建操作符,再调用全局创建操作符,创建所述追踪对象。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在待创建的追踪对象所属的类中,重载释放操作符;
基于重载后的释放操作符,删除所述追踪对象对应的位置表项。
5.根据权利要求4所述的方法,其特征在于,所述基于重载后的释放操作符,删除所述追踪对象对应的位置表项,包括:
调用重载后的释放操作符,调用全局释放操作符,再调用所述追踪对象所属的类对应的析构函数;
根据所述析构函数,将所述追踪对象对应的位置表项在所述全局列表中删除。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
为创建位置表项操作与删除位置表项操作设置互斥锁,使得所述创建位置表项操作与删除位置表项操作不能同时进行。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到所述追踪对象不再被应用,根据所述位置表项中的创建位置参数,定位所述追踪对象在程序源文件中的创建位置。
8.一种应用程序中对象的管理装置,其特征在于,所述装置包括:
第一重载模块,用于在待创建的追踪对象所属的类中,重载创建操作符;
创建模块,用于基于重载后的创建操作符,创建所述追踪对象;
添加模块,用于在全局列表中为所述追踪对象添加位置表项,所述位置表项中至少包括所述追踪对象的创建位置参数。
9.根据权利要求8所述的装置,其特征在于,所述添加模块在全局列表中为所述追踪对象添加的位置表项中的创建位置参数至少包括所述追踪对象在程序源文件中的文件名称、函数名称及行号。
10.根据权利要求8所述的装置,其特征在于,所述创建模块,用于获取所述追踪对象的创建位置参数对应的宏关键字;将所述创建位置参数对应的宏关键字添加到所述重载后的创建操作符的输入参数中,得到新的输入参数;基于所述新的输入参数,调用重载后的创建操作符,再调用全局创建操作符,创建所述追踪对象。
11.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二重载模块,用于在待创建的追踪对象所属的类中,重载释放操作符;
删除模块,用于基于重载后的释放操作符,删除所述追踪对象对应的位置表项。
12.根据权利要求11所述的装置,其特征在于,所述删除模块,用于调用重载后的释放操作符,调用全局释放操作符,再调用所述追踪对象所属的类对应的析构函数;根据所述析构函数,将所述追踪对象对应的位置表项在所述全局列表中删除。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
设置模块,用于为创建位置表项操作与删除位置表项操作设置互斥锁,使得所述创建位置表项操作与删除位置表项操作不能同时进行。
14.根据权利要求8所述的装置,其特征在于,所述装置还包括:
定位模块,用于当检测到所述追踪对象不再被应用,根据所述位置表项中的创建位置参数,定位所述追踪对象在程序源文件中的创建位置。
15.一种应用程序中对象的管理装置,其特征在于,包括:
处理器;
用于存储处理器可执行的指令;
其中,所述处理器被配置为:
在待创建的追踪对象所属的类中,重载创建操作符;
基于重载后的创建操作符,创建所述追踪对象;
在全局列表中为所述追踪对象添加位置表项,所述位置表项中至少包括所述追踪对象的创建位置参数。
CN201510152992.4A 2015-04-02 2015-04-02 应用程序中对象的管理方法及装置 Active CN104808985B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510152992.4A CN104808985B (zh) 2015-04-02 2015-04-02 应用程序中对象的管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510152992.4A CN104808985B (zh) 2015-04-02 2015-04-02 应用程序中对象的管理方法及装置

Publications (2)

Publication Number Publication Date
CN104808985A true CN104808985A (zh) 2015-07-29
CN104808985B CN104808985B (zh) 2019-02-19

Family

ID=53693838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510152992.4A Active CN104808985B (zh) 2015-04-02 2015-04-02 应用程序中对象的管理方法及装置

Country Status (1)

Country Link
CN (1) CN104808985B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018072408A1 (zh) * 2016-10-18 2018-04-26 广州市动景计算机科技有限公司 一种内存分析方法、装置、系统以及计算设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101763305A (zh) * 2009-12-29 2010-06-30 青岛海信宽带多媒体技术有限公司 一种嵌入式系统内存泄露的检测方法
CN102981919A (zh) * 2012-11-02 2013-03-20 福建升腾资讯有限公司 快速定位错误源头的内存管理方法
US20140181024A1 (en) * 2012-12-21 2014-06-26 Philipp Becker Approach for modularized sychronization and memory management

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101763305A (zh) * 2009-12-29 2010-06-30 青岛海信宽带多媒体技术有限公司 一种嵌入式系统内存泄露的检测方法
CN102981919A (zh) * 2012-11-02 2013-03-20 福建升腾资讯有限公司 快速定位错误源头的内存管理方法
US20140181024A1 (en) * 2012-12-21 2014-06-26 Philipp Becker Approach for modularized sychronization and memory management

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
杨善红: "Linux应用程序内存错误自动化测试研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
葛瑶等: "基于红黑树的堆内存泄漏动态检测技术", 《计算机工程 》 *
邵叶秦: "有效的C++内存泄露检测方法", 《电脑知识与技术(学术交流) 》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018072408A1 (zh) * 2016-10-18 2018-04-26 广州市动景计算机科技有限公司 一种内存分析方法、装置、系统以及计算设备
CN107967205A (zh) * 2016-10-18 2018-04-27 广州市动景计算机科技有限公司 一种内存分析方法、装置、系统以及计算设备
CN107967205B (zh) * 2016-10-18 2020-12-29 阿里巴巴(中国)有限公司 一种内存分析方法、装置、系统以及计算设备

Also Published As

Publication number Publication date
CN104808985B (zh) 2019-02-19

Similar Documents

Publication Publication Date Title
US10540350B2 (en) Source code search engine
CN111427561A (zh) 业务代码的生成方法、装置、计算机设备和存储介质
CN109787957B (zh) 配置文件的配置方法及相关装置
CN109766139B (zh) 配置文件的配置方法及装置
CN111111201B (zh) 一种基于游戏的技能创建方法、装置、服务器及介质
CN110750315B (zh) Android系统中的类加载方法、装置、设备和存储介质
CN111752960B (zh) 数据处理方法和装置
CN107832440A (zh) 一种数据挖掘方法、装置、服务器及计算机可读存储介质
CN114281653B (zh) 应用程序的监控方法、装置及计算设备
CN110597552B (zh) 项目持续集成流水线的配置方法、装置、设备及存储介质
US8769498B2 (en) Warning of register and storage area assignment errors
CN116974581B (zh) 代码生成方法、装置、电子设备和存储介质
CN114816170A (zh) 规则方案生成方法、装置、介质及电子设备
CN111124872A (zh) 基于差异代码分析的分支检测方法、装置及存储介质
CN113282799A (zh) 节点的操作方法、装置、计算机设备和存储介质
CN109101191B (zh) 数据存储方法、装置和存储介质以及电子设备
CN104808985A (zh) 应用程序中对象的管理方法及装置
CN110908644A (zh) 状态节点的配置方法、装置、计算机设备和存储介质
CN111753330B (zh) 数据泄露主体的确定方法、装置、设备和可读存储介质
US11194885B1 (en) Incremental document object model updating
Jiang et al. A preliminary analysis and case study of feature-based software customization
CN110262790B (zh) 组件生成方法、装置、存储介质及终端设备
CN110286894B (zh) 脚本生成方法、装置、计算机设备和存储介质
CN113094052A (zh) 应用构建方法、装置、计算机设备和存储介质
US20140244539A1 (en) Business process management, configuration and execution

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant