CN110032440A - 一种内存管理方法及相关装置 - Google Patents
一种内存管理方法及相关装置 Download PDFInfo
- Publication number
- CN110032440A CN110032440A CN201810027603.9A CN201810027603A CN110032440A CN 110032440 A CN110032440 A CN 110032440A CN 201810027603 A CN201810027603 A CN 201810027603A CN 110032440 A CN110032440 A CN 110032440A
- Authority
- CN
- China
- Prior art keywords
- memory
- target
- target memory
- management
- data
- 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
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
-
- 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/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本发明实施例公开了一种内存管理方法及相关装置,用于自动完成内存的申请和释放,避免发生内存泄露。该方法包括:获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;接收所述用户的数据操作指令;响应于所述用户的数据操作指令,对所述目标内存进行数据管理并记录所述目标内存的位置;当停止使用所述目标内存后,通过所述管理类对所述目标内存进行释放。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种内存管理方法及相关装置。
背景技术
随着计算机的迅速发展,随着人们对计算机性能的要求不断提高,为了适应计算机其他硬件设备的改进,计算机的内存的需求也越来越大,除了可以在内存容量上进行改进,还可以在内存容量不变的情况下,对内存进行高效利用。
目前,程序开发人员使用内存进行工作,一般会定义各种各样的局部或者全局变量来存储临时数据,内存同时需要对写入数据和读取数据进行处理。对于存储数据则需要先申请内存空间,使用完成后再通过人工操作主动释放占用的内存空间。
当程序开发人员,申请了内存使用,并在使用完成后忘记了释放内存,会导致了内存泄露;又或者是在程序执行过程中,出现了错误导致后续流程没有执行,从而产生内存泄露。内存泄露严重的情况下则会导致程序内存使用完而产生崩溃,同时如果对于一块内存如果释放多次也会导致程序崩溃。
发明内容
本发明提供了一种内存管理方法及相关装置,用于自动完成内存的申请和释放,避免发生内存泄露。
本发明第一方面提供了一种内存管理方法,包括:
获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;
响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;
根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;
接收所述用户的数据操作指令;
响应于所述用户的数据操作指令,对所述目标内存进行数据管理并记录所述目标内存的位置;
当停止使用所述目标内存后,通过所述管理类对所述目标内存进行释放。
可选的,所述对所述目标内存进行数据管理并记录所述目标内存的位置包括:
通过所述管理类对所述目标内存进行读取和/或写入操作,并记录所述目标内存的位置。
可选的,所述通过所述管理类对所述目标内存进行读取和/或写入操作,并记录所述目标内存的位置包括:
通过所述管理类调用写入模板函数向所述目标内存写入第一目标数据,并记录写入了所述第一目标数据的所述目标内存的位置;和/或,通过所述管理类调用读取模板函数读取所述目标内存中的第二目标数据,并记录读取到所述第二目标数据的所述目标内存的位置。
可选的,所述通过所述管理类申请所述预置容量大小的目标内存包括:
通过所述管理类申请所述预置容量大小的目标内存,并调用构造函数对所述目标内存进行管理。
可选的,所述通过所述管理类对所述目标内存进行释放包括:
通过所述管理类调用析构函数释放所述目标内存。
本发明第二方面提供了一种内存管理装置,包括:
获取单元,用于获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;
创建单元,用于响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;
申请单元,用于根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;
接收单元,用于接收所述用户的数据操作指令;
处理单元,用于响应于所述用户的数据操作指令,对所述目标内存进行数据管理并记录所述目标内存的位置;
释放单元,当停止使用所述目标内存后,用于通过所述管理类对所述目标内存进行释放。
可选的,所述处理单元包括:
处理模块,用于通过所述管理类对所述目标内存进行读取和/或写入操作,并记录所述目标内存的位置。
可选的,所述处理模块具体用于:
通过所述管理类调用写入模板函数向所述目标内存写入第一目标数据,并记录写入了所述第一目标数据的所述目标内存的位置;和/或,通过所述管理类调用读取模板函数读取所述目标内存中的第二目标数据,并记录读取到所述第二目标数据的所述目标内存的位置。
本发明第三方面提供了一种电子设备,包括存储器、处理器,其特征在于,所述处理器用于执行存储器中存储的计算机管理类程序时实现如上述任意一项所述的内存管理方法的步骤。
本发明第四方面提供了一种计算机可读存储介质,其上存储有计算机管理类程序,其特征在于:所述计算机管理类程序被处理器执行时实现如上述任意一项所述的内存管理方法的步骤。
附图说明
图1为本发明实施例中内存管理方法的一个实施例示意图;
图2为本发明实施例中内存管理装置的一个实施例示意图;
图3为本发明实施例中内存管理装置的另一个实施例示意图;
图4为本发明实施例中内存管理装置的一种硬件结构示意图;
图5为本发明实施例中内存管理装置的另一种硬件结构示意图。
具体实施方式
本发明提供了一种内存管理方法及相关装置,用于自动完成内存的申请和释放,避免发生内存泄露。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
请参阅图1,图1为本发明实施例提供的内存管理方法的一个实施例示意图,包括:
101、获取用户的内存请求指令,内存请求指令携带有用户所需内存的预置容量大小。
获取用户的内存请求指令,内存请求指令携带有用户所需内存的预置容量大小。
可以理解的是,用户可以根据实际需要,内存管理装置申请内存,该内存的大小由用户决定,并且内存请求指令中携带的预置容量大小不能超过内存管理装置所能提供的最大容量。
需要说明的是,在获取用户的内存请求指令之前,内存管理装置还需要定义一个管理类和相关函数,该管理类可以用来完成内存的申请和释放操作,以及可以完成对内存写入数据和读取数据的操作,并且自动记录内存的读写位置。本发明实施例及后续实施例中的管理类中的相关函数可以包括接口函数,为了便于说明,本发明实施例及后续实施例中将接口函数简称为接口。
具体实现如下:
首先本发明定义一个缓存的管理类AutoMgrBuffer:
class AutoMgrBuffer{
此类则是用于管理内存申请和释放以及提供相关接口。
定义构造函数以用于初始化类AutoMgrBuffer的对象属性。
AutoMgrBuffer(size_t_size=256);
本发明提供了一个接口用于传入一个申请的内存大小,用于当申请的内存已经写满数据,需要重新申请内存时,申请的内存大小,如果太大则造成内存浪费,如果太小则会频繁的申请内存,所以用户可以依据使用场景来填入该数据的大小。
定义构造函数,传入一个已经分配的内存buff。
AutoMgrBuffer(void*buf,size_t_len,size_t_size=256);
此接口用于用户将自己申请的内存buff使用这种函数来进行管理,从而避免内存忘记释放而造成内存泄漏。
一个数据对象出生时会调用构造函数,死亡时则会调用析构函数。
定义其析构函数,其中析构函数主要用于完成清理工作,列如释放内存,当创建的AutoMgrBuffer对象在其作用域中使用完成后,系统会自动调用其析构函数,从而本文则可以在析构函数中进行内存的释放,从而不需要用户去显示的调用内存释放操作,从而避免用户忘记释放内存而导致内存泄漏。
~AutoMgrBuffer();
定义模板的写入缓存的接口:
template<class T>void Write(const T& _val);
template<class T>是C++语言提供的模板类型的申明,代表此函数是一个模板函数,模板类型则是T类型。
此接口提供一个写入模板对象的接口,从而使用这一个接口既可以写入类型为int、char、uint、uchar、int32、int64、对象类型等等,那么对于用户并不需要区分写入数据的类型而调用不同的接口,本文则可以直接都调用写入(Write)模板类型接口。
定义模板的读取缓存数据的接口:
template<class T>size_t Read(T& _val);
此接口提供一个读取模板对象的接口,从而使用这一个接口既可以读取类型为int、char、uint、uchar、int32、int64、对象类型等等,那么对于用户并不需要区分读取数据的类型而调用不同的接口,本文则可以直接都调用读取(Read)模板类型接口。
定义接口以获取当前缓存的大小容量:
size_t Capacity()const;
此接口用于返回申请的内存大小,以供用户知道内存的申请大小。
定义接口以获取当前缓存的剩余大小:
size_t Length()const;
此接口用于返回申请的内存写入数据后,还剩于多大的内存空间可以写入数据。
定义接口用于重置AutoMgrBuffer对象。
当AutoMgrBuffer使用完后,需要进行内存释放,并情况其属性,本发明则提供一个接口用于重置AutoMgrBuffer对象。
void Reset();
此接口则会释放掉申请的内存,并将属性进行情况。
}
定义接口将其他构造函数定义成私有的,防止对象拷贝
private:
AutoMgrBuffer(const AutoMgrBuffer& _rhs);
AutoMgrBuffer&operator=(const AutoMgrBuffer& _rhs);
在C++语言的语法中,将上述函数定义成私有的,则可以防止用户对对象进行拷贝操作,防止同一份内存使用2个不同的AutoMgrBuffer对象来管理。
定义AutoMgrBuffer类的成员属性数据。
对于AutoMgrBuffer类来说需要记录当期申请的内存地址,内存的容量大小,当前数据写入的内存位置,当期申请的缓存还剩余的内存空间。
unsigned char*m_pbuff;用于记录内存的申请内存的起始地址。
size_t m_capacity;用于记录已经每次申请内存的大小。
size_t m_pos;用于记录当前内存数据写入的位置。
size_t m_length;用于记录申请的内存还有多少容量可以写数据。
size_t m_unitsize;用于记录每次申请内存空间的大小。
102、响应于内存请求指令,创建一个管理类,管理类用于管理内存的申请和释放。
响应于内存请求指令,创建一个管理类,管理类用于管理内存的申请和释放。
需要说明的是,管理类中包括多个函数,具体的,可以是用于初始化定义AutoMgrBuffer对象的构造函数,本发明实施例提供了两个构造函数和一个析构函数,具体实现如下:
对于接口AutoMgrBuffer::AutoMgrBuffer(size_t _nSize)
此接口则初始化成员变量,并将参数赋值给成员变量。
对于接口AutoMgrBuffer(void*buf,size_t_len,size_t_size=256);实现如下:
此接口也是对成员变量进行赋值操作。
对于接口~AutoMgrBuffer()具体实现如下:
103、根据内存分配请求指令,通过管理类申请预置容量大小的目标内存。
根据内存分配请求指令,通过管理类申请预置容量大小的目标内存。
需要说明的是,管理类调用上述定义的构造函数向内存管理装置申请预置容量大小的内存。
对于不同的情况,可以调用不同的构造函数,例如,当申请的内存已经写满数据,需要重新申请内存时,调用函数AutoMgrBuffer(size_t_size=256);
其中,数值为256,还可以是其他数值,具体此处不做限定。还可以是其他申请的内存大小,可以理解的是,用户可以根据实际需要,内存管理装置申请内存,该内存的大小由用户决定,并且内存请求指令中携带的预置容量大小不能超过内存管理装置所能提供的最大容量。如果太大则造成内存浪费,如果太小则会频繁的申请内存,所以用户可以依据使用场景来填入该数据的大小。
104、接收用户的数据操作指令。
接收用户的数据操作指令。具体的,将用户发送的指令,例如,向内存中写入数据或者是从内存中读取数据,数据在内存中的存储形式此处不再赘述。
需要说明的是,在接收到用户的数据操作指令之前,内存管理设备还会定义模板函数,模板函数包括写入数据的接口和读取数据的接口。
具体的实现如下:
定义模板函数的写入数据的接口,此接口则提供给用户可以写入任意类型的数据。
首先会对写入数据的长度进行判断,如果超过可以写入的长度,则需要重新分配内存,否则可以直接将数据拷贝到缓存中。
举例说明,如果超过长度,则重新分配内存,并且分配力度是以m_unitsize为单元,进行分配,具体则是调用如下函数来分配:
size_t mallocsize=((_len+m_unitsize-1)
/m_unitsize)*m_unitsize;
首先计算需要分配的长度,分配的力度是m_unitsize为单元。
得到长度后,调用系统函数来分配内存。
void*p=realloc(m_pbuff,mallocsize);
系统函数realloc则是重新分配内存,分配大小则是mallocsize。
m_pbuff=(unsigned char*)p;
并将分配的新的内存赋值给成员变量m_pbuff来进行保存。
分配完成内存后,接下来则是将需要写入的数据拷贝到分配的新的内存的后面。
memcpy(m_pbuff+m_pos,&_val,sizeof(_val));
从而完成了对数据的写入功能。
}
}
本发明提供一个模板的读取数据的接口,从而方便的读取任意类型的数据。具体实现如下:
首先对参数读取合法性进行判断,读取的指针如果为空则直接返回,读取不成功;读取的指针若不为空,则从当前已经内存中拷贝数据。
memcpy(pbuffer,m_pbuff+m_pos-readlen,readlen);
从而将数据拷贝到需要读取的pbuffer指针中。
}
}
105、响应于用户的数据操作指令,对目标内存进行数据管理并记录目标内存的位置。
响应于用户的数据操作指令,对目标内存进行数据管理并记录目标内存的位置。
具体的,通过管理类调用写入模板函数向目标内存写入第一目标数据,并记录写入了第一目标数据的目标内存的位置;和/或,通过管理类调用读取模板函数读取目标内存中的第二目标数据,并记录读取到第二目标数据的目标内存的位置。
具体的,写入模板函数为上述定义的写入数据接口,接口如下:
具体的,读取模板函数为上述定义的读取数据接口,接口如下:
需要说明的是,还可以定义更多其他功能的接口函数,例如,可以获取当前写入的指针位置的函数;可以获取当前已经分配的内存大小的函数,以及对当前分配的内存进行重置的函数等等。
106、当停止使用目标内存后,通过管理类对目标内存进行释放。
当停止使用目标内存后,通过管理类调用析构函数对目标内存进行释放。
举例说明,当完成了内存管理装置的定义和接口以及实现后,则可以方便的使用。本发明实施例对其具体实践性进行举例说明,具体实现如下:
对于不使用内存管理装置来读写内存,其具体操作如下:
首先分配一段内存,然后写入数据,然后读取数据。
Char*pBuff=new char[100];
Int nPos=0;
写入数据如下:
Int nData=53;
首先要判断当期剩余的内存是否可以写入这个数据。
If(sizeof(nData)>100–nPos)
Return;则说明不能再写入数据了。
Memcpy(pBuff+nPos,&nData,sizeof(nData));
同时需要去更新nPos,以方便下一个数据的写入。
nPos=nPos+sizeof(nData)。
如果写入大量的数据,则上述代码则会变的非常庞大,并且一定要对变量nPos进行赋值,否则数据会被上个数据覆盖,并且每次写入还要判断当期写入的数据是否超过了分配的内存。
同时在使用完成后,一定要对分配的pBuff进行内存释放,否则会造成了内存泄漏。
对于使用内存管理装置时:
AutoMgrBuffer buff;
首先根据定义的管理类AutoMgrBuffer。
然后写入数据:
Int nData=53;
Buff.Write(nData);那么管理类只需要一行代码则可以完成数据的写入,并且内部会判断当前内存是否可以写入该数据,并且如果不够写则会自动分配内存来写入。
Int nRead=0;
Buff.Read(nRead);
读取数据也只需要一行代码,则可以读取数据。
该管理类使用完成后,超出了其作用范围后,申请的内存会自动释放,不需要用户进行显示的调用去释放,从而避免因为用户忘记释放而造成内存泄漏。从而为用户提供便利。
上面从内存管理方法的角度对本发明实施例进行了描述,下面从内存管理装置的角度对本发明实施例进行描述。
请参阅图2,图2为本发明实施例提供的内存管理装置的一个实施例示意图,该内存管理装置,具体包括:
获取单元201,用于获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;
创建单元202,用于响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;
申请单元203,用于根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;
接收单元204,用于接收所述用户的数据操作指令;
处理单元205,用于响应于所述用户的数据操作指令,对所述目标内存进行数据管理并记录所述目标内存的位置;
释放单元206,当停止使用所述目标内存后,用于通过所述管理类对所述目标内存进行释放。
如图3,本发明实施例提供的内存管理装置的另一个实施例示意图,包括:
获取单元301,用于获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;
创建单元302,用于响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;
申请单元303,用于根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;
接收单元304,用于接收所述用户的数据操作指令;
处理单元305,用于响应于所述用户的数据操作指令,对所述目标内存进行数据管理并记录所述目标内存的位置;
释放单元306,当停止使用所述目标内存后,用于通过所述管理类对所述目标内存进行释放。
可选的,所述处理单元305包括:
处理模块3051,用于通过所述管理类对所述目标内存进行读取和/或写入操作,并记录所述目标内存的位置。
可选的,处理模块3051具体用于:
通过所述管理类调用写入模板函数向所述目标内存写入第一目标数据,并记录写入了所述第一目标数据的所述目标内存的位置;和/或,通过所述管理类调用读取模板函数读取所述目标内存中的第二目标数据,并记录读取到所述第二目标数据的所述目标内存的位置。
本发明实施例,获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;接收所述用户的数据操作指令;响应于所述用户的数据操作指令,对所述目标内存进行数据管理并记录所述目标内存的位置;当停止使用所述目标内存后,通过所述管理类对所述目标内存进行释放。管理类可以自动完成内存的申请和释放,避免发生内存泄露。
请参阅图4,图4为本发明实施例提供的电子设备的实施例示意图。
如图4所示,本发明实施例提供了一种电子设备,包括存储器410、处理器420及存储在存储器420上并可在处理器420上运行的计算机程序411,处理器420执行计算机程序411时实现以下步骤:
获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;
响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;
根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;
接收所述用户的数据操作指令;
响应于所述用户的数据操作指令,对所述目标内存进行数据管理并记录所述目标内存的位置;
当停止使用所述目标内存后,通过所述管理类对所述目标内存进行释放。
可选的,所述对所述目标内存进行数据管理并记录所述目标内存的位置包括:
通过所述管理类对所述目标内存进行读取和/或写入操作,并记录所述目标内存的位置。
可选的,所述通过所述管理类对所述目标内存进行读取和/或写入操作,并记录所述目标内存的位置包括:
通过所述管理类调用写入模板函数向所述目标内存写入第一目标数据,并记录写入了所述第一目标数据的所述目标内存的位置;和/或,通过所述管理类调用读取模板函数读取所述目标内存中的第二目标数据,并记录读取到所述第二目标数据的所述目标内存的位置。
可选的,所述通过所述管理类申请所述预置容量大小的目标内存包括:
通过所述管理类申请所述预置容量大小的目标内存,并调用构造函数对所述目标内存进行管理。
可选的,所述通过所述管理类对所述目标内存进行释放包括:
通过所述管理类调用析构函数释放所述目标内存。
在具体实施过程中,处理器420执行计算机程序411时,可以实现图1对应的实施例中任一实施方式。
由于本实施例所介绍的电子设备为实施本发明实施例中一种内存管理装置所采用的设备,故而基于本发明实施例中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本发明实施例中的方法不再详细介绍,只要本领域所属技术人员实施本发明实施例中的方法所采用的设备,都属于本发明所欲保护的范围。
请参阅图5,图5为本发明实施例提供的一种计算机可读存储介质的实施例示意图。
如图5所示,本实施例提供了一种计算机可读存储介质500,其上存储有计算机程序511,该计算机程序511被处理器执行时实现如下步骤:
获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;
响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;
根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;
接收所述用户的数据操作指令;
响应于所述用户的数据操作指令,对所述目标内存进行数据管理并记录所述目标内存的位置;
当停止使用所述目标内存后,通过所述管理类对所述目标内存进行释放。
可选的,所述对所述目标内存进行数据管理并记录所述目标内存的位置包括:
通过所述管理类对所述目标内存进行读取和/或写入操作,并记录所述目标内存的位置。
可选的,所述通过所述管理类对所述目标内存进行读取和/或写入操作,并记录所述目标内存的位置包括:
通过所述管理类调用写入模板函数向所述目标内存写入第一目标数据,并记录写入了所述第一目标数据的所述目标内存的位置;和/或,通过所述管理类调用读取模板函数读取所述目标内存中的第二目标数据,并记录读取到所述第二目标数据的所述目标内存的位置。
可选的,所述通过所述管理类申请所述预置容量大小的目标内存包括:
通过所述管理类申请所述预置容量大小的目标内存,并调用构造函数对所述目标内存进行管理。
可选的,所述通过所述管理类对所述目标内存进行释放包括:
通过所述管理类调用析构函数释放所述目标内存。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (10)
1.一种内存管理方法,其特征在于,包括:
获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;
响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;
根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;
接收所述用户的数据操作指令;
响应于所述用户的数据操作指令,对所述目标内存进行数据管理并记录所述目标内存的位置;
当停止使用所述目标内存后,通过所述管理类对所述目标内存进行释放。
2.根据权利要求1所述的内存管理方法,其特征在于,所述对所述目标内存进行数据管理并记录所述目标内存的位置包括:
通过所述管理类对所述目标内存进行读取和/或写入操作,并记录所述目标内存的位置。
3.根据权利要求2所述的内存管理方法,其特征在于,所述通过所述管理类对所述目标内存进行读取和/或写入操作,并记录所述目标内存的位置包括:
通过所述管理类调用写入模板函数向所述目标内存写入第一目标数据,并记录写入了所述第一目标数据的所述目标内存的位置;和/或,通过所述管理类调用读取模板函数读取所述目标内存中的第二目标数据,并记录读取到所述第二目标数据的所述目标内存的位置。
4.根据权利要求1所述的内存管理方法,其特征在于,所述通过所述管理类申请所述预置容量大小的目标内存包括:
通过所述管理类申请所述预置容量大小的目标内存,并调用构造函数对所述目标内存进行管理。
5.根据权利要求1所述的内存管理方法,其特征在于,所述通过所述管理类对所述目标内存进行释放包括:
通过所述管理类调用析构函数释放所述目标内存。
6.一种内存管理装置,其特征在于,包括:
获取单元,用于获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;
创建单元,用于响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;
申请单元,用于根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;
接收单元,用于接收所述用户的数据操作指令;
处理单元,用于响应于所述用户的数据操作指令,对所述目标内存进行数据管理并记录所述目标内存的位置;
释放单元,当停止使用所述目标内存后,用于通过所述管理类对所述目标内存进行释放。
7.根据权利要求6所述的内存管理装置,其特征在于,所述处理单元包括:
处理模块,用于通过所述管理类对所述目标内存进行读取和/或写入操作,并记录所述目标内存的位置。
8.根据权利要求7所述的内存管理装置,其特征在于,所述处理模块具体用于:
通过所述管理类调用写入模板函数向所述目标内存写入第一目标数据,并记录写入了所述第一目标数据的所述目标内存的位置;和/或,通过所述管理类调用读取模板函数读取所述目标内存中的第二目标数据,并记录读取到所述第二目标数据的所述目标内存的位置。
9.一种电子设备,包括存储器、处理器,其特征在于,所述处理器用于执行存储器中存储的计算机管理类程序时实现如权利要求1至5中任意一项所述的内存管理方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机管理类程序,其特征在于:所述计算机管理类程序被处理器执行时实现如权利要求1至5中任意一项所述的内存管理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810027603.9A CN110032440A (zh) | 2018-01-11 | 2018-01-11 | 一种内存管理方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810027603.9A CN110032440A (zh) | 2018-01-11 | 2018-01-11 | 一种内存管理方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110032440A true CN110032440A (zh) | 2019-07-19 |
Family
ID=67234341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810027603.9A Pending CN110032440A (zh) | 2018-01-11 | 2018-01-11 | 一种内存管理方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110032440A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858258A (zh) * | 2020-07-29 | 2020-10-30 | 浪潮电子信息产业股份有限公司 | 一种内存监控方法、装置及电子设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104182350A (zh) * | 2013-05-28 | 2014-12-03 | 中国银联股份有限公司 | 一种针对包括多个进程的应用的内存管理方法和装置 |
CN105260139A (zh) * | 2015-10-19 | 2016-01-20 | 福州瑞芯微电子股份有限公司 | 一种磁盘管理方法以及系统 |
CN105354147A (zh) * | 2014-08-20 | 2016-02-24 | 腾讯科技(深圳)有限公司 | 一种内存池管理方法及管理系统 |
US20160147648A1 (en) * | 2014-11-25 | 2016-05-26 | Alibaba Group Holding Limited | Method and apparatus for memory management |
CN106776356A (zh) * | 2016-11-28 | 2017-05-31 | 新疆熙菱信息技术股份有限公司 | 一种实现内存高速交互的系统及方法 |
CN106844046A (zh) * | 2016-12-31 | 2017-06-13 | 昊宏广泰(北京)科技有限公司 | 宽带载波内存管理算法 |
CN107423220A (zh) * | 2017-08-04 | 2017-12-01 | 青岛海信宽带多媒体技术有限公司 | 内存泄露的检测方法及装置、电子设备 |
-
2018
- 2018-01-11 CN CN201810027603.9A patent/CN110032440A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104182350A (zh) * | 2013-05-28 | 2014-12-03 | 中国银联股份有限公司 | 一种针对包括多个进程的应用的内存管理方法和装置 |
CN105354147A (zh) * | 2014-08-20 | 2016-02-24 | 腾讯科技(深圳)有限公司 | 一种内存池管理方法及管理系统 |
US20160147648A1 (en) * | 2014-11-25 | 2016-05-26 | Alibaba Group Holding Limited | Method and apparatus for memory management |
CN105260139A (zh) * | 2015-10-19 | 2016-01-20 | 福州瑞芯微电子股份有限公司 | 一种磁盘管理方法以及系统 |
CN106776356A (zh) * | 2016-11-28 | 2017-05-31 | 新疆熙菱信息技术股份有限公司 | 一种实现内存高速交互的系统及方法 |
CN106844046A (zh) * | 2016-12-31 | 2017-06-13 | 昊宏广泰(北京)科技有限公司 | 宽带载波内存管理算法 |
CN107423220A (zh) * | 2017-08-04 | 2017-12-01 | 青岛海信宽带多媒体技术有限公司 | 内存泄露的检测方法及装置、电子设备 |
Non-Patent Citations (1)
Title |
---|
万明、樊晓光、南建国等: "《Vega Prime视景仿真开发技术》", 30 June 2015, 国防工业出版社 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858258A (zh) * | 2020-07-29 | 2020-10-30 | 浪潮电子信息产业股份有限公司 | 一种内存监控方法、装置及电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9639459B2 (en) | I/O latency and IOPs performance in thin provisioned volumes | |
US20220035544A1 (en) | Memory allocation method and device, and electronic apparatus | |
CN107168884A (zh) | 存储系统、信息处理系统及非易失性存储器的控制方法 | |
CN107168639A (zh) | 存储系统、信息处理系统及非易失性存储器的控制方法 | |
CN107168640A (zh) | 存储系统、信息处理系统及非易失性存储器的控制方法 | |
CN107168885A (zh) | 存储系统、信息处理系统及非易失性存储器的控制方法 | |
DE112020004181T5 (de) | Bereitstellen eines direkten datenzugriffs zwischen beschleunigern und speicher in einer datenverarbeitungsumgebung | |
CN108694076A (zh) | 多节点存储操作 | |
DE102019114027A1 (de) | Verfahren und Vorrichtungen zur Optimierung dynamischer Speichervergaben in mehrstufigen Speichersystemen | |
CN104461706B (zh) | 一种将共享全局变量共享的方法和多处理装置 | |
CN103309796A (zh) | 一种组件对象模型对象的监控方法和装置 | |
CN108984295A (zh) | 内存回收方法、计算机装置及计算机可读存储介质 | |
US10713162B1 (en) | System and method for computer data garbage collection acceleration using peer to peer data transfers | |
CN110007858A (zh) | 存储空间分配方法及装置 | |
CN108574645A (zh) | 一种队列调度方法及装置 | |
DE102020102781A1 (de) | Auswahl von massenspeicherungsvorrichtungs-streams zur speicherbereinigung auf der basis lokaler sättigung | |
CN115168259A (zh) | 一种数据存取方法、装置、设备和计算机可读存储介质 | |
CN105260138A (zh) | 读写控制系统及方法 | |
CN110032440A (zh) | 一种内存管理方法及相关装置 | |
CN113419672B (zh) | 一种存储容量管理方法、系统及存储介质 | |
CN105511959A (zh) | 虚拟资源分配方法和装置 | |
CN110162395A (zh) | 一种内存分配的方法及装置 | |
CN109408222A (zh) | 智能终端及其空间管理方法、具有存储功能的装置 | |
CN111444117A (zh) | 存储空间碎片化实现方法、装置、存储介质及电子设备 | |
CN102662891B (zh) | 基于亲和性感知的dma缓冲区管理方法及装置 |
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 |