CN108319504A - 内存占用优化方法、装置及可读存储介质 - Google Patents
内存占用优化方法、装置及可读存储介质 Download PDFInfo
- Publication number
- CN108319504A CN108319504A CN201810225474.4A CN201810225474A CN108319504A CN 108319504 A CN108319504 A CN 108319504A CN 201810225474 A CN201810225474 A CN 201810225474A CN 108319504 A CN108319504 A CN 108319504A
- Authority
- CN
- China
- Prior art keywords
- interface
- target interface
- little use
- target
- derived class
- 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
- 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
Abstract
本发明实施例提供一种内存占用优化方法、装置及可读存储介质。该方法包括:在接收到接口调用指令后,获得该接口调用指令中需要调用的目标接口;基于不常用接口列表中判断该目标接口是否为不常用接口;若该目标接口为不常用接口,则查找该目标接口对应的派生类中与该目标接口对应的目标接口对象;创建该目标接口对象的实例,以调用该目标接口,其中,在调用该目标接口状态下派生类增加对应占用内存,在调用该目标接口状态结束后所述派生类释放对应占用内存,以实现内存占用优化。由此,能够解决派生类在继承多个接口时因继承一些不常用的接口而引起的内存非必须的占用问题,从而在一定程度上减少整个程序对内存的占用。
Description
技术领域
本发明涉及数据处理技术领域,具体而言,涉及一种内存占用优化方法、装置及可读存储介质。
背景技术
在C++语言中,接口是一种特殊的类,该类不能被实例化,也即不能创建类对象,只能被其派生类继承,从而通过创建派生类的对象来使用该接口。使用接口的好处在于可以将声明与实现进行分离,并且可以将任意接口的组合来形成组件化的编程模型。
经发明人在实际研究中发现,由于接口不能被实例化,只能通过其派生类继承并实现该接口的方式,通过实例化派生类从而使用该接口。但是假如一个派生类,继承了多个接口,那么随着继承的接口个数的增加,该派生类的大小也就会不断增加,派生类大小的增加也就意味着,创建该派生类实例时,就会耗用更多的内存,但是其中可能某些接口是不经常使用的,这样就白白的浪费掉了内存。
发明内容
为了克服现有技术中的上述不足,本发明的目的在于提供一种内存占用优化方法、装置及可读存储介质,能够解决派生类在继承多个接口时因继承一些不常用的接口而引起的内存非必须的占用问题,从而在一定程度上减少整个程序对内存的占用。
为了实现上述目的,本发明实施例采用的技术方案如下:
结合第一方面,本发明实施例提供一种内存占用优化方法,应用于电子设备,所述电子设备中存储有不常用接口列表,所述不常用接口列表中包括有至少一个不常用接口信息,所述方法包括:
在接收到接口调用指令后,获得所述接口调用指令中需要调用的目标接口;
基于所述不常用接口列表中判断所述目标接口是否为不常用接口;
若所述目标接口为不常用接口,则查找所述目标接口对应的派生类中与该目标接口对应的目标接口对象,其中,所述派生类继承多个接口,所述多个接口不包括所述不常用接口列表中的不常用接口;
创建所述目标接口对象的实例,以调用所述目标接口,其中,在调用所述目标接口状态下所述派生类增加对应占用内存,在调用所述目标接口状态结束后所述派生类释放所述对应占用内存,以实现内存占用优化。
可选地,所述基于所述不常用接口列表中判断所述目标接口是否为不常用接口的步骤之后,所述方法还包括:
若所述目标接口不为不常用接口,则创建继承所述目标接口的派生类的实例,以调用所述目标接口。
可选地,所述查找所述目标接口对应的派生类中与该目标接口对应的目标接口对象的步骤,包括:
创建所述目标接口对应的派生类的实例;
在创建所述目标接口对应的派生类的实例之后通过指针获取所述目标接口对应的目标接口对象。
可选地,在接收到接口调用指令后,获得所述接口调用指令中需要调用的目标接口的步骤之前,所述方法还包括:
创建所述不常用接口列表;
所述创建所述不常用接口列表的方式,包括:
获取各个派生对象继承的所有接口;
统计每个所述接口的使用频率,并查找使用频率小于预设阈值的接口;
将所述使用频率小于预设阈值的接口作为不常用接口,以创建所述不常用接口列表。
可选地,所述获取各个派生对象继承的所有接口的步骤,包括:
针对每个派生对象,调用query函数获取到该派生对象继承的所有接口。
可选地,所述方法还包括:
获取所述派生类继承的所有接口;
基于所述不常用接口列表查找所述派生类继承的所有接口中是否包括有不常用接口;
若包括,则删除该派生类与查找到的不常用接口的继承关系。
结合第二方面,本发明实施例还提供一种内存占用优化装置,应用于电子设备,所述电子设备中存储有不常用接口列表,所述不常用接口列表中包括有至少一个不常用接口信息,所述装置包括:
获得模块,用于在接收到接口调用指令后,获得所述接口调用指令中需要调用的目标接口;
判断模块,用于基于所述不常用接口列表中判断所述目标接口是否为不常用接口;
查找模块,用于若所述目标接口为不常用接口,则查找所述目标接口对应的派生类中与该目标接口对应的目标接口对象,其中,所述派生类继承多个接口,所述多个接口不包括所述不常用接口列表中的不常用接口;
创建模块,用于创建所述目标接口对象的实例,以调用所述目标接口,其中,在调用所述目标接口状态下所述派生类增加对应占用内存,在调用所述目标接口状态结束后所述派生类释放所述对应占用内存,以实现内存占用优化。
结合第三方面,本发明实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被执行时实现上述的内存占用优化方法。
相对于现有技术而言,本发明具有以下有益效果:
本发明实施例提供的内存占用优化方法、装置及可读存储介质,采用派生类不继承不常用接口的方式,在需要调用不常用接口时,通过实例化派生类中实现该目标接口对应的目标接口对象,在不需要使用不常用接口时,派生类无需占用该不常用接口对应的内存,从而能够解决派生类在继承多个接口时因继承一些不常用的接口而引起的内存非必须的占用问题,从而在一定程度上减少整个程序对内存的占用。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
图1为本发明实施例提供的电子设备的一种结构示意框图;
图2为本发明实施例提供的内存占用优化装置的一种功能模块图;
图3为本发明实施例提供的内存占用优化方法的一种流程示意图;
图4为本发明实施例提供的内存占用优化方法的另一种流程示意图。
图标:100-电子设备;110-总线;120-处理器;130-存储介质;140-总线接口;150-网络适配器;160-用户接口;200-内存占用优化装置;210-获得模块;220-判断模块;230-查找模块;240-创建模块。
具体实施方式
在C++语言中,接口是一种特殊的类,该类不能被实例化,也即不能创建类对象,只能被其派生类继承,从而通过创建派生类的对象来使用该接口。使用接口的好处在于可以将声明与实现进行分离,并且可以将任意接口的组合来形成组件化的编程模型。
经发明人在实际研究中发现,由于接口不能被实例化,只能通过其派生类继承并实现该接口的方式,通过实例化派生类从而使用该接口。但是假如一个派生类,继承了多个接口,那么随着继承的接口个数的增加,该派生类的大小也就会不断增加,派生类大小的增加也就意味着,创建该派生类实例时,就会耗用更多的内存,但是其中可能某些接口是不经常使用的,这样就白白的浪费掉了内存。
例如,假设有五个接口,IAdd接口提供一个add(加法)方法,ISub接口提供一个sub(减法)方法,IMul接口提供一个mul(乘法)方法,IDiv接口提供一个div(除法)方法,以及一个IPrint接口提供一个print(打印)方法,并且这些接口都继承自一个统一的接口IObject,该IObject提供一个query的方法,调用query方法能够获取到该类实现的其他所有的接口。具体获取方式对应的代码如下所示:
class IObject
{
public:
void query(const char*name,void**ppv);
}
class IAdd:public IObject
{
public virtual int add(int a,int b)=0;
}
class ISub:public IObject
{
public virtual int sub(int a,int b)=0;
}
现在假设有一个Math派生类来实现这些接口,并且该Math派生类则全部继承实现上述的5个接口,那么Math类的声明如下所示:
在C++语言中,一个含有虚函数(以virtual关键字开头的函数)的类(接口中必定含有虚函数),都会拥有一个虚函数表,该虚函数表指向该类的虚函数地址。那么即使该类没有任何的数据成员,在32位系统上,其大小也会因为含有一个虚函数表而占用4个字节的内存空间,也就是该类的大小是4个字节。那么该Math类的大小就是20个字节(集成了5个接口)。
并且为了能够通过IAdd、ISub、IDiv、IMul、IPrint接口中的任意一个接口,获取到其他的接口,Math类的query函数必须实现为下面的这种方式
因为Math类的继承顺序一次是IAdd、ISub、IMul、IDiv、IPrint,那么IAdd相对于Math类对象的起始地址偏移就是0,ISub的偏移地址为4,IMul的偏移地址为8,IDiv的偏移地址为12,IPrint的偏移地址为16。
假如IPrint接口是使用频率非常低的接口,那么Math类因为继承了该接口,造成了4个字节的消耗。假如Math类又继承了N个不经常使用的接口,那么Math类将继续增加4*N字节的不必要花费。如何解决派生类在继承多个接口时因继承一些不常用的接口而引起的内存非必须的占用问题,是本领域技术人员亟待解决的技术问题。
以上现有技术中的方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本发明实施例针对上述问题所提出的解决方案,都应该是发明人在本发明过程中对本发明做出的贡献。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
请参阅图1,为本发明实施例提供电子设备100的结构框图。所述电子设备100可以通过诸如有线或无线网络等方式发送或接收信号,或可以在诸如存储器中将信号处理或存储为物理存储状态。每个电子设备100可以是包括硬体、软体或内嵌逻辑元件或者两个或多个此类元件的组合的电子装置,并能够执行由电子设备100实施或支援的合适的功能。可选地,所述电子设备100可以是一种具有无线收发功能的设备,包括室内或室外、手持、穿戴或车载设备。例如,所述电子设备100可以是手机(mobile phone)、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(Virtual Reality,VR)终端设备、增强现实(Augmented Reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程医疗(remote medical)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等等。本申请的实施例对应用场景不做限定。
如图1所示,所述电子设备100可以由总线110作一般性的总线体系结构来实现。根据电子设备100的具体应用和整体设计约束条件,总线110可以包括任意数量的互连总线和桥接。总线110将各种电路连接在一起,这些电路包括处理器120、存储介质130和总线接口140。可选地,电子设备100可以使用总线接口140将网络适配器150等经由总线110连接。网络适配器150可用于实现电子设备100中物理层的信号处理功能,并通过天线实现射频信号的发送和接收。用户接口160可以连接外部设备,例如:键盘、显示器、鼠标或者操纵杆等。总线110还可以连接各种其它电路,如定时源、外围设备、电压调节器或者功率管理电路等,这些电路是本领域所熟知的,因此不再详述。
可以替换的,电子设备100也可配置成通用处理系统,例如通称为芯片,该通用处理系统包括:提供处理功能的一个或多个微处理器,以及提供存储介质130的至少一部分的外部存储器,所有这些都通过外部总线体系结构与其它支持电路连接在一起。
可替换的,电子设备100可以使用下述来实现:具有处理器120、总线接口140、用户接口160的ASIC(专用集成电路);以及集成在单个芯片中的存储介质130的至少一部分,或者,电子设备100可以使用下述来实现:一个或多个FPGA(现场可编程门阵列)、PLD(可编程逻辑器件)、控制器、状态机、门逻辑、分立硬件部件、任何其它适合的电路、或者能够执行本发明通篇所描述的各种功能的电路的任意组合。
其中,处理器120负责管理总线110和一般处理(包括执行存储在存储介质130上的软件)。处理器120可以使用一个或多个通用处理器和/或专用处理器来实现。处理器120的例子包括微处理器、微控制器、DSP处理器和能够执行软件的其它电路。应当将软件广义地解释为表示指令、数据或其任意组合,而不论是将其称作为软件、固件、中间件、微代码、硬件描述语言还是其它。
在图1中存储介质130被示为与处理器120分离,然而,本领域技术人员很容易明白,存储介质130或其任意部分可位于电子设备100之外。举例来说,存储介质130可以包括传输线、用数据调制的载波波形、和/或与无线节点分离开的计算机制品,这些介质均可以由处理器120通过总线接口140来访问。可替换地,存储介质130或其任意部分可以集成到处理器120中,例如,可以是高速缓存和/或通用寄存器。
所述处理器120可执行上述实施例,具体地,所述存储介质130中存储有内存占用优化装置200,所述处理器120可以用于执行所述内存占用优化装置200。
请参阅图2,为本发明实施例提供的上述内存占用优化装置200的一种功能模块图,所述内存占用优化装置200可包括:
获得模块210,用于在接收到接口调用指令后,获得所述接口调用指令中需要调用的目标接口;
判断模块220,用于基于所述不常用接口列表中判断所述目标接口是否为不常用接口;
查找模块230,用于若所述目标接口为不常用接口,则查找所述目标接口对应的派生类中与该目标接口对应的目标接口对象,其中,所述派生类继承多个接口,所述多个接口不包括所述不常用接口列表中的不常用接口;
创建模块240,用于创建所述目标接口对象的实例,以调用所述目标接口,其中,在调用所述目标接口状态下所述派生类增加对应占用内存,在调用所述目标接口状态结束后所述派生类释放所述对应占用内存,以实现内存占用优化。
可选地:所述创建模块240,还用于若所述目标接口不为不常用接口,则创建继承所述目标接口的派生类的实例,以调用所述目标接口。
可选地,所述查找所述目标接口对应的派生类中与该目标接口对应的目标接口对象的方式,包括:创建所述目标接口对应的派生类的实例,在创建所述目标接口对应的派生类的实例之后通过指针获取所述目标接口对应的目标接口对象。
请参阅图3,为本发明实施例提供的内存占用优化方法的一种流程示意图,所述方法由图1中所示的电子设备100执行,下面结合图3对所述内存占用优化装置200包括的各个功能模块进行详细描述。所应说明的是,本发明实施例提供的内存占用优化方法不以图3及以下所述的具体顺序为限制。所述方法的具体流程如下:
步骤S210,在接收到接口调用指令后,获得所述接口调用指令中需要调用的目标接口。本实施例中,该步骤S210可由上述获得模块210执行。
步骤S220,基于所述不常用接口列表中判断所述目标接口是否为不常用接口。本实施例中,该步骤S220可由上述判断模块220执行。
本实施例中,所述电子设备100中存储有不常用接口列表,所述不常用接口列表中包括有至少一个不常用接口信息,当电子设备100接收到接口调用指令后,获得所述接口调用指令中需要调用的目标接口。接着,查找所述不常用接口列表中是否包括所述目标接口,若包括,则表明该目标接口为不常用接口。
步骤S230,若所述目标接口为不常用接口,则查找所述目标接口对应的派生类中与该目标接口对应的目标接口对象。本实施例中,该步骤S230可由上述查找模块230执行。
本实施例中,所述派生类继承多个接口,所述多个接口不包括所述不常用接口列表中的不常用接口。也就是说,因为上述目标接口为不经常使用的接口,那么在实现派生类的时候可以不用去继承并且实现这个目标接口,只有在当需要使用该目标接口时,创建所述目标接口对应的派生类的实例,并在创建所述目标接口对应的派生类的实例之后通过指针获取所述目标接口对应的目标接口对象。可选地,若所述目标接口不为不常用接口,则创建继承所述目标接口的派生类的实例,以调用所述目标接口。
步骤S240,创建所述目标接口对象的实例,以调用所述目标接口。本实施例中,该步骤S240可由上述创建模块240执行。
本实施例中,在上述的优化方案中,Math类的实现代码如下所示:
并且Math类的query函数必须实现为下面的这种方式
本实施例中,电子设备100在需要使用该目标接口时,通过创建实现该目标接口的目标接口对象的实例,假设派生类中的接口占用的内存大小为16个字节,该目标接口占用的内存大小为4个字节,由于派生类没有继承该目标接口,从而将派生类占用的内存大小减少了4个字节,这样不需要使用目标接口时,一个派生类对象只需占用16个字节的内存,而当需要使用目标接口时,才去创建目标接口。具体地,从上面的query实现中可以看出,当所述目标接口的名称是IPrint接口时,通过new Print代码,创建一个Print对象的实例,而不是在该派生类对象的地址上加上16个字节的偏移。这样当有下面的代码时
IAdd*pAdd=new Math;
IPrint*print=0;
pAdd->query(“IPrint”,(void**)&print);
当执行到第一行代码时,实例化派生类Math对象,此时将申请16字节的内存,而不是20字节的内存,只有当代码执行到第三行时,通过pAdd指针,去获取IPrint接口时,才会去创建Print对象,此时申请4个字节的内存。换句话说,在调用所述目标接口状态下所述派生类增加对应占用内存,在调用所述目标接口状态结束后所述派生类释放所述对应占用内存,以实现内存占用优化。
通过上述方法,采用派生类不继承不常用接口的方式,在需要调用不常用接口时,通过实例化派生类中实现该目标接口对应的目标接口对象,在不需要使用不常用接口时,派生类无需占用该不常用接口对应的内存,从而能够解决派生类在继承多个接口时因继承一些不常用的接口而引起的内存非必须的占用问题,从而在一定程度上减少整个程序对内存的占用。
可选地,下面对上述不常用接口列表的创建方式进行说明,请参阅图4,在所述步骤S210之前,本实施例提供的内存占用优化方法还可以包括如下步骤:
步骤S209,创建所述不常用接口列表,。
在一种实施方式中,首先可获取各个派生对象继承的所有接口,例如可针对每个派生对象,调用query函数获取到该派生对象继承的所有接口,然后统计每个所述接口的使用频率,并查找使用频率小于预设阈值的接口,再将所述使用频率小于预设阈值的接口作为不常用接口,以创建所述不常用接口列表。由此,通过创建不常用接口列表,从而为后续不常用接口判断提供依据。
可选地,在创建好所述不常用接口列表的基础上,可以对某个派生类继承的接口进行检测,例如,首先可获取所述派生类继承的所有接口,然后基于所述不常用接口列表查找所述派生类继承的所有接口中是否包括有不常用接口,若包括,则删除该派生类与查找到的不常用接口的继承关系。由此,通过删除该派生类与查找到的不常用接口的继承关系,可以减少派生类占用的内存。
进一步地,本发明实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被执行时实现上述的内存占用优化方法。
综上所述,本发明实施例提供的内存占用优化方法、装置及可读存储介质,采用派生类不继承不常用接口的方式,在需要调用不常用接口时,通过实例化派生类中实现该目标接口对应的目标接口对象,在不需要使用不常用接口时,派生类无需占用该不常用接口对应的内存,从而能够解决派生类在继承多个接口时因继承一些不常用的接口而引起的内存非必须的占用问题,从而在一定程度上减少整个程序对内存的占用。
在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
可以替换的,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等
需要说明的是,在本文中,术语"包括"、"包含"或者其任何其它变体意在涵盖非排它性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句"包括一个……"限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其它的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
Claims (10)
1.一种内存占用优化方法,其特征在于,应用于电子设备,所述电子设备中存储有不常用接口列表,所述不常用接口列表中包括有至少一个不常用接口信息,所述方法包括:
在接收到接口调用指令后,获得所述接口调用指令中需要调用的目标接口;
基于所述不常用接口列表中判断所述目标接口是否为不常用接口;
若所述目标接口为不常用接口,则查找所述目标接口对应的派生类中与该目标接口对应的目标接口对象,其中,所述派生类继承多个接口,所述多个接口不包括所述不常用接口列表中的不常用接口;
创建所述目标接口对象的实例,以调用所述目标接口,其中,在调用所述目标接口状态下所述派生类增加对应占用内存,在调用所述目标接口状态结束后所述派生类释放所述对应占用内存,以实现内存占用优化。
2.根据权利要求1所述的内存占用优化方法,其特征在于,所述基于所述不常用接口列表中判断所述目标接口是否为不常用接口的步骤之后,所述方法还包括:
若所述目标接口不为不常用接口,则创建继承所述目标接口的派生类的实例,以调用所述目标接口。
3.根据权利要求1所述的内存占用优化方法,其特征在于,所述查找所述目标接口对应的派生类中与该目标接口对应的目标接口对象的步骤,包括:
创建所述目标接口对应的派生类的实例;
在创建所述目标接口对应的派生类的实例之后通过指针获取所述目标接口对应的目标接口对象。
4.根据权利要求1所述的内存占用优化方法,其特征在于,在接收到接口调用指令后,获得所述接口调用指令中需要调用的目标接口的步骤之前,所述方法还包括:
创建所述不常用接口列表;
所述创建所述不常用接口列表的方式,包括:
获取各个派生对象继承的所有接口;
统计每个所述接口的使用频率,并查找使用频率小于预设阈值的接口;
将所述使用频率小于预设阈值的接口作为不常用接口,以创建所述不常用接口列表。
5.根据权利要求4所述的内存占用优化方法,其特征在于,所述获取各个派生对象继承的所有接口的步骤,包括:
针对每个派生对象,调用query函数获取到该派生对象继承的所有接口。
6.根据权利要求1所述的内存占用优化方法,其特征在于,所述方法还包括:
获取所述派生类继承的所有接口;
基于所述不常用接口列表查找所述派生类继承的所有接口中是否包括有不常用接口;
若包括,则删除该派生类与查找到的不常用接口的继承关系。
7.一种内存占用优化装置,其特征在于,应用于电子设备,所述电子设备中存储有不常用接口列表,所述不常用接口列表中包括有至少一个不常用接口信息,所述装置包括:
获得模块,用于在接收到接口调用指令后,获得所述接口调用指令中需要调用的目标接口;
判断模块,用于基于所述不常用接口列表中判断所述目标接口是否为不常用接口;
查找模块,用于若所述目标接口为不常用接口,则查找所述目标接口对应的派生类中与该目标接口对应的目标接口对象,其中,所述派生类继承多个接口,所述多个接口不包括所述不常用接口列表中的不常用接口;
创建模块,用于创建所述目标接口对象的实例,以调用所述目标接口,其中,在调用所述目标接口状态下所述派生类增加对应占用内存,在调用所述目标接口状态结束后所述派生类释放所述对应占用内存,以实现内存占用优化。
8.根据权利要求7所述的内存占用优化装置,其特征在于:
所述创建模块,还用于若所述目标接口不为不常用接口,则创建继承所述目标接口的派生类的实例,以调用所述目标接口。
9.根据权利要求7所述的内存占用优化装置,其特征在于,所述查找所述目标接口对应的派生类中与该目标接口对应的目标接口对象的方式,包括:
创建所述目标接口对应的派生类的实例;
在创建所述目标接口对应的派生类的实例之后通过指针获取所述目标接口对应的目标接口对象。
10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序被执行时实现权利要求1-6中任意一项所述的内存占用优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810225474.4A CN108319504B (zh) | 2018-03-19 | 2018-03-19 | 内存占用优化方法、装置及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810225474.4A CN108319504B (zh) | 2018-03-19 | 2018-03-19 | 内存占用优化方法、装置及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108319504A true CN108319504A (zh) | 2018-07-24 |
CN108319504B CN108319504B (zh) | 2021-01-01 |
Family
ID=62897963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810225474.4A Active CN108319504B (zh) | 2018-03-19 | 2018-03-19 | 内存占用优化方法、装置及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108319504B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110046004A (zh) * | 2019-03-29 | 2019-07-23 | 北京奇艺世纪科技有限公司 | 一种适配自动引用计数arc特性的方法、装置及电子设备 |
CN110287030A (zh) * | 2019-06-28 | 2019-09-27 | 潍柴动力股份有限公司 | 内存使用方法和装置 |
CN110688169A (zh) * | 2019-09-16 | 2020-01-14 | 腾讯科技(深圳)有限公司 | 应用程序加速方法及装置、存储介质、电子设备 |
CN113608779A (zh) * | 2021-08-10 | 2021-11-05 | 平安国际智慧城市科技股份有限公司 | 服务接口配置方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6578090B1 (en) * | 1998-06-08 | 2003-06-10 | Ricoh Company, Ltd. | System and method for interfacing two modules supporting various applications |
CN1776621A (zh) * | 2004-11-19 | 2006-05-24 | 松下电器产业株式会社 | 程序变换方法 |
CN101770360A (zh) * | 2008-12-29 | 2010-07-07 | 上海科泰世纪科技有限公司 | 构件化软件系统中构件的继承方法 |
CN101776996A (zh) * | 2010-01-26 | 2010-07-14 | 上海市共进通信技术有限公司 | 通信系统中基于对象的配置管理系统的构建实现方法 |
CN107111495A (zh) * | 2015-01-05 | 2017-08-29 | 谷歌公司 | 用于虚拟和接口方法调用的装置和方法 |
CN107577590A (zh) * | 2016-07-04 | 2018-01-12 | 北京奇虎科技有限公司 | 基于数据库服务实时调用虚拟接口的方法及装置 |
-
2018
- 2018-03-19 CN CN201810225474.4A patent/CN108319504B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6578090B1 (en) * | 1998-06-08 | 2003-06-10 | Ricoh Company, Ltd. | System and method for interfacing two modules supporting various applications |
CN1776621A (zh) * | 2004-11-19 | 2006-05-24 | 松下电器产业株式会社 | 程序变换方法 |
CN101770360A (zh) * | 2008-12-29 | 2010-07-07 | 上海科泰世纪科技有限公司 | 构件化软件系统中构件的继承方法 |
CN101776996A (zh) * | 2010-01-26 | 2010-07-14 | 上海市共进通信技术有限公司 | 通信系统中基于对象的配置管理系统的构建实现方法 |
CN107111495A (zh) * | 2015-01-05 | 2017-08-29 | 谷歌公司 | 用于虚拟和接口方法调用的装置和方法 |
CN107577590A (zh) * | 2016-07-04 | 2018-01-12 | 北京奇虎科技有限公司 | 基于数据库服务实时调用虚拟接口的方法及装置 |
Non-Patent Citations (1)
Title |
---|
易压: "23、C++多态(虚函数 纯虚函数 抽象类)", 《HTTP://BLOG.SINA.COM.CN/S/BLOG_AD91F9BC0101AXRX.HTML》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110046004A (zh) * | 2019-03-29 | 2019-07-23 | 北京奇艺世纪科技有限公司 | 一种适配自动引用计数arc特性的方法、装置及电子设备 |
CN110046004B (zh) * | 2019-03-29 | 2022-09-02 | 北京奇艺世纪科技有限公司 | 一种适配自动引用计数arc特性的方法、装置及电子设备 |
CN110287030A (zh) * | 2019-06-28 | 2019-09-27 | 潍柴动力股份有限公司 | 内存使用方法和装置 |
CN110287030B (zh) * | 2019-06-28 | 2021-08-20 | 潍柴动力股份有限公司 | 内存使用方法和装置 |
CN110688169A (zh) * | 2019-09-16 | 2020-01-14 | 腾讯科技(深圳)有限公司 | 应用程序加速方法及装置、存储介质、电子设备 |
CN113608779A (zh) * | 2021-08-10 | 2021-11-05 | 平安国际智慧城市科技股份有限公司 | 服务接口配置方法、装置、设备及存储介质 |
CN113608779B (zh) * | 2021-08-10 | 2023-12-26 | 平安国际智慧城市科技股份有限公司 | 服务接口配置方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108319504B (zh) | 2021-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108319504A (zh) | 内存占用优化方法、装置及可读存储介质 | |
CN111767143B (zh) | 交易数据处理方法、装置、设备及系统 | |
CN105389325A (zh) | 内容搜索方法和实施内容搜索方法的电子装置 | |
US20170011010A1 (en) | Method for displaying web content and electronic device supporting the same | |
CN108874924A (zh) | 搜索服务的创建方法、装置及计算机可读存储介质 | |
CN104079613A (zh) | 用于多租户间共享应用程序对象的方法和系统 | |
CN106030549A (zh) | 用于对晶片外高速缓存存储器的标签集高速缓存的方法、装置和系统 | |
CN108509529A (zh) | 数据分页排序方法、装置及可读存储介质 | |
CN110389812B (zh) | 用于管理虚拟机的方法、设备和计算机可读存储介质 | |
CN114816393B (zh) | 信息生成方法、装置、设备以及存储介质 | |
US10540415B2 (en) | Apparatus and method for managing history information in an electronic device | |
CN105847446A (zh) | 一种网络数据的获取方法、装置和系统 | |
CN113868528A (zh) | 资讯推荐方法、装置、电子设备及可读存储介质 | |
CN111104436B (zh) | 一种标签维值自调整方法及系统 | |
CN107729523A (zh) | 数据服务方法、电子装置及存储介质 | |
CN111782717A (zh) | 一种数据处理方法、系统及电子设备和存储介质 | |
CN116032614A (zh) | 容器网络微隔离方法、装置、设备和介质 | |
CN109543169A (zh) | 报表处理方法及装置 | |
CN113391803B (zh) | 创建对象管理引擎的方法、装置、终端设备以及存储介质 | |
CN109960505A (zh) | 用户界面组件插件化方法、系统、设备及存储介质 | |
CN110096315B (zh) | 一种组件加载方法和装置 | |
CN108459884A (zh) | 应用程序关闭方法、装置、存储介质和电子设备 | |
US9928090B2 (en) | Method for processing dynamic language and electronic device using the same | |
CN110960858A (zh) | 一种游戏资源的处理方法、装置、设备及存储介质 | |
CN109558578A (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 |