内存管理方法、装置及电子设备制造方法及图纸

技术编号:20362701 阅读:38 留言:0更新日期:2019-02-16 16:27
本发明专利技术公开了一种内存管理方法、装置及电子设备,其中,方法包括:获取应用程序的内存申请的请求;基于请求分配第一内存空间,并申请第二内存空间;其中,第二内存空间用于保存第一内存空间的大小、第一内存空间的引用次数中的至少之一;将第一内存空间与第二内存空间进行关联,并记录到预先设置的关联容器中;获取基于第一内存空间的内存操作指令;利用关联容器处理内存操作指令。通过额外申请的第二内存空间保存第一内存空间的性能参数,在后续利用第一内存空间进行操作时,就可以利用所保存的性能参数对判断引用第一内存空间的指针是否为空、是否越界等等,从而能够客观解决内存问题,避免人为因素的影响,提高了内存问题处理的效率。

【技术实现步骤摘要】
内存管理方法、装置及电子设备
本专利技术涉及内存管理
,具体涉及一种内存管理方法、装置及电子设备。
技术介绍
在软件程序开发过程中,最容易出现、最难发现以及最不好解决的问题就是内存问题,其主要涉及两个方面:内存越界以及空指针。其中,对于内存越界,就是程序向系统申请了一块内存,而在使用这块内存的时候,超出了申请的范围。例如,申请的是100字节的空间,但是由于某种原因写入了120字节,这就是内存访问越界。内存访问越界的后果是:你的写入破坏了本不属于你的空间。而内存越界通常会导致如下后果:(1)破坏了堆中的内存分配信息数据,特别是动态分配的内存块的内存信息数据;(2)破坏了程序自己的其他对象的内存空间,这种破坏会影响程序执行的不正确性;(3)破坏了空闲内存块。对于空指针,就是指针的内容为空。既然一个指针指向的是空对象,就不能使用这个对象,否则就会产生空指针异常。内存越界轻则导致程序会出现未定义的现象,重则直接导致程序崩溃;而访问空指针则直接导致系统崩溃。针对上述两种内存问题,现有技术中通常是依赖程序开发人员的编程经验,或者在程序报错时,找到哪里有内存访问越界,而比较麻烦的问题在于,出现错误的地方往往不是真正内存越界的地方,就必须通过代码走查、单步跟踪并观察变量以及在调试环境的帮助下对变量进行写入跟踪。然而,该方法的处理效率较低,影响程序的开发周期。
技术实现思路
有鉴于此,本专利技术实施例提供了一种内存管理方法、装置及电子设备,以解决对于内存问题处理效率低的问题。根据第一方面,本专利技术实施例提供了一种内存管理方法,包括:获取应用程序的内存申请的请求;基于所述请求分配第一内存空间,并申请第二内存空间;其中,所述第二内存空间用于保存所述第一内存空间的大小、所述第一内存空间的引用次数中的至少之一;将所述第一内存空间与所述第二内存空间进行关联,并记录到预先设置的关联容器中;获取基于所述第一内存空间的内存操作指令;利用所述关联容器处理所述内存操作指令。本专利技术实施例提供的内存管理方法,在申请第一内存空间的同时额外申请第二内存空间,该第二内存空间用于保存第一内存空间的性能参数(例如,第一内存空间的大小、引用第一内存空间的次数等等),在后续利用第一内存空间进行操作时,就可以利用第二内存空间中保存的性能参数对判断引用第一内存空间的指针是否为空、基于第一内存管空间的操作是否越界等等,从而能够客观解决内存问题,避免人为因素的影响,提高了内存问题处理的效率。结合第一方面,在第一方面第一实施方式中,所述利用所述关联容器处理所述内存操作指令,包括:提取所述内存操作指令中的操作对象;基于所述操作对象的地址,查询所述关联容器中是否存在与所述操作对象的地址对应的元素;当所述关联容器中不存在与所述操作对象的地址对应的元素时,确定所述操作对象为空指针,停止后续处理步骤。本专利技术实施例提供的内存管理方法,利用关联容器实现第一内存空间与第二内存空间的关联,若内存操作指令中的操作对象在关联容器中并不存在,则表示该操作对象为空指针;即通过关联容器即可判断出内存操作指令中的操作对象是否为空指针,提高了内存问题处理的效率。结合第一方面第一实施方式,在第一方面第二实施方式中,还包括:当所述关联容器中存在与所述操作对象的地址对应的元素时,确定与所述操作对象对应的所述第一内存空间的大小;基于所述操作对象的地址以及所述操作对象的长度,计算所述操作对象所需的内存空间的大小;比较确定出的所述第一内存空间与计算出的所述内存空间的大小关系;当计算出的所述内存空间大于所述确定出的所述第一内存空间时,确定内存越界,停止后续处理步骤。本专利技术实施例提供的内存管理方法,利用关联容器中第一内存的大小,确定内存操作指令中的操作对象是否越界,若该操作对象越界时,停止后续处理步骤,避免出现由于内存越界所导致的程序崩溃等内存问题。结合第一方面第一实施方式,在第一方面第三实施方式中,所述利用所述关联容器处理所述内存操作指令,包括:当所述关联容器中存在与所述操作对象的地址对应的元素时,基于所述内存操作指令,修改所述第一内存空间的引用次数;确定修改后的所述第一内存空间的引用次数是否为零;当修改后的所述第一内存空间的引用次数为零时,释放所述第一内存空间。本专利技术实施例提供的内存管理方法,通过实时修改第二内存空间中的引用计数的数值,用以表示当前引用第一内存空间的次数,在第一内存空间的引用次数为零时,表示第一内存空间对内存操作指令无影响,释放该第一内存空间,以提高内存利用效率。结合第一方面第三实施方式,在第一方面第四实施方式中,所述基于所述内存操作指令,修改所述第一内存空间的引用次数,包括:当所述内存操作指令用于创建一个与所述第一内存空间关联的操作对象时,所述第一内存空间的引用次数加1;当所述内存操作指令用于释放一个与所述第一内存空间关联的操作对象时,所述第一内存空间的引用次数减1。结合第一方面或第一方面任一实施方式,在第一方面第五实施方式中,所述利用关联容器,绑定所述第一内存空间与所述第二内存空间,包括:分别记录所述第一内存空间的地址以及所述第二内存空间的地址,以得到两个内存空间的地址;将两个所述内存空间的地址插入所述关联容器中。本专利技术实施例提供的内存管理方法,在关联容器中绑定第一内存空间以及第二内存空间的地址,通过地址实现内存空间的查找,能够提高内存操作指令的处理效率。根据第二方面,本专利技术实施例还提供了一种内存管理装置,包括:第一获取模块,用于获取应用程序的内存申请的请求;分配模块,用于基于所述请求分配第一内存空间,并申请第二内存空间;其中,所述第二内存空间用于保存所述第一内存空间的大小、所述第一内存空间的引用次数中的至少之一;绑定模块,用于将所述第一内存空间与所述第二内存空间进行关联,并记录到预先设置的关联容器中;第二获取模块,用于获取基于所述第一内存空间的内存操作指令;处理模块,用于利用所述关联容器处理所述内存操作指令。本专利技术实施例提供的内存管理装置,在申请第一内存空间的同时额外申请第二内存空间,该第二内存空间用于保存第一内存空间的性能参数(例如,第一内存空间的大小、引用第一内存空间的次数等等),在后续利用第一内存空间进行操作时,就可以利用第二内存空间中保存的性能参数对判断引用第一内存空间的指针是否为空、基于第一内存空间的操作是否越界等等,从而能够客观解决内存问题,避免人为因素的影响,提高了内存问题处理的效率。结合第二方面,在第二方面第一实施方式中,所述处理模块,包括:提取单元,用于提取所述内存操作指令中的操作对象;查询单元,用于基于所述操作对象的地址,查询所述关联容器中是否存在与所述操作对象的地址对应的元素;空指针停止单元,用于当所述关联容器中不存在与所述操作对象的地址对应的元素,确定所述操作对象为空指针,停止后续处理步骤。根据第三方面,本专利技术实施例还提供了一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行本专利技术第一方面,或第一方面任一实施方式中所述的内存管理方法。根据第四方面,本专利技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行本文档来自技高网...

【技术保护点】
1.一种内存管理方法,其特征在于,包括:获取应用程序的内存申请的请求;基于所述请求分配第一内存空间,并申请第二内存空间;其中,所述第二内存空间用于保存所述第一内存空间的大小、所述第一内存空间的引用次数中的至少之一;将所述第一内存空间与所述第二内存空间进行关联,并记录到预先设置的关联容器中;获取基于所述第一内存空间的内存操作指令;利用所述关联容器处理所述内存操作指令。

【技术特征摘要】
1.一种内存管理方法,其特征在于,包括:获取应用程序的内存申请的请求;基于所述请求分配第一内存空间,并申请第二内存空间;其中,所述第二内存空间用于保存所述第一内存空间的大小、所述第一内存空间的引用次数中的至少之一;将所述第一内存空间与所述第二内存空间进行关联,并记录到预先设置的关联容器中;获取基于所述第一内存空间的内存操作指令;利用所述关联容器处理所述内存操作指令。2.根据权利要求1所述的方法,其特征在于,所述利用所述关联容器处理所述内存操作指令,包括:提取所述内存操作指令中的操作对象;基于所述操作对象的地址,查询所述关联容器中是否存在与所述操作对象的地址对应的元素;当所述关联容器中不存在与所述操作对象的地址对应的元素时,确定所述操作对象为空指针,停止后续处理步骤。3.根据权利要求2所述的方法,其特征在于,还包括:当所述关联容器中存在与所述操作对象的地址对应的元素时,确定与所述操作对象对应的所述第一内存空间的大小;基于所述操作对象的地址以及所述操作对象的长度,计算所述操作对象所需的内存空间的大小;比较确定出的所述第一内存空间与计算出的所述内存空间的大小关系;当计算出的所述内存空间大于所述确定出的所述第一内存空间时,确定内存越界,停止后续处理步骤。4.根据权利要求2所述的方法,其特征在于,所述利用所述关联容器处理所述内存操作指令,包括:当所述关联容器中存在与所述操作对象的地址对应的元素时,基于所述内存操作指令,修改所述第一内存空间的引用次数;确定修改后的所述第一内存空间的引用次数是否为零;当修改后的所述第一内存空间的引用次数为零时,释放所述第一内存空间。5.根据权利要求4所述的方法,其特征在于,所述基于所述内存操作指令,修改所述第一内存空间的引用次数,包括:当所述内存操作指令用于创建一个与所述第一内存空...

【专利技术属性】
技术研发人员:王飞飞芮义根许世林
申请(专利权)人:苏州科达科技股份有限公司苏州市科远软件技术开发有限公司上海领世通信技术发展有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1