[发明专利]管理全局对象内存的方法、存储介质、电子设备及系统在审
申请号: | 201810403703.7 | 申请日: | 2018-04-28 |
公开(公告)号: | CN110413401A | 公开(公告)日: | 2019-11-05 |
发明(设计)人: | 黄浩;张文明;陈少杰 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 武汉智权专利代理事务所(特殊普通合伙) 42225 | 代理人: | 张凯 |
地址: | 430000 湖北省武汉市东湖开*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 全局对象 触发 内存 存储函数 分配函数 内存释放函数 存储介质 电子设备 内存地址 调用 程序模块 读取 指针 程序定义 程序结束 存储内存 定义内存 内存管理 实时记录 释放 创建 存储 占用 管理 退出 分配 | ||
本发明公开了一种管理全局对象内存的方法、存储介质、电子设备及系统,其涉及内存管理领域,该方法包括定义内存分配函数,在内存分配函数中插入第一触发函数,所述第一触发函数在创建全局对象时触发并调用存储函数,所述存储函数存储内存分配函数为全局对象所分配的内存地址或指针;创建第二触发函数,所述第二触发函数在程序模块退出时触发并调用内存释放函数,所述内存释放函数读取存储函数存储的内存地址或指针并释放全局对象所占的内存。本发明能够实时记录程序员或程序定义的全局对象,并在程序结束后释放全局对象占用的内存。
技术领域
本发明涉及内存管理领域,具体涉及一种管理全局对象内存的方法、存储介质、电子设备及系统。
背景技术
当硬盘中的程序需要运行时候,其程序将逻辑运算首先提取至内存供其他设备快速的读取以及转化。在CPU、GPU等等设备进行运算时,其读取内存的数据,并将运算的结果存储在内存中。而当多个程序同时运行的时候,多个程序将同时占用内存,空间上不同的程序占用的内存大小不同,程序使用内存的时间段也不同。当内存不足以支持更多的程序运行时候,程序将自行进行排队,等待其他程序运行结束后再开始运行。而这样的等待将浪费部分时间,具体表现为设备处理速度低下,性能不足。而当一个程序占用另一个程序使用的内存后,另一程序将由于内存数据丢失或者不全而崩溃或无法运行。因此,每个程序占用内存的大小、方式以及时间对计算机运行各个程序的性能有较大的影响。
在程序的开发以及运行过程中,程序员或程序自身常常定义很多对象,这些对象在程序运行时候都将存储于内存,即占用内存,而当程序较复杂时候,程序需求更多的对象,占用更大的内存空间,要求更长的内存使用时长。如果程序只申请内存,不释放不再使用的内存最终会导致内存被完全占用,而程序因为无其他空余内存而无法继续运行而崩溃;如果程序在使用内存后立即释放,则将频繁的存储以及读取内存,程序将因为部分从程序开始至结束都运行的数据则在存储、读取以及释放中浪费过多的时间。
为了解决上述问题,程序员对程序中定义的对象进行了区分,程序始终使用的对象为全局对象/静态对象,在程序运行中不再使用即释放内存即删除,而是一直存储于内存中直到程序结束。当程序较复杂的时候,则需要定义较多的全局对象,因此也需要程序员或程序对这些全局对象进行管理。
然而常见的管理全局对象的方式在需要手动释放全局对象所占用的内存的时候,可能漏掉部分全局对象,从而造成程序内存泄露。程序内存泄露轻则影响程序性能,重则导致程序崩溃无法正常运行。因此亟须一种方法、电子设备、存储介质或系统,能够帮助程序员对定义的全局对象进行全面的管理。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种管理全局对象内存的方法、存储介质、电子设备及系统,能够实时记录程序员或程序定义的全局对象,并在程序结束后释放全局对象占用的内存。
为达到以上目的,本发明采取的技术方案是:
一种管理全局对象内存的方法,其包括:
定义内存分配函数,在内存分配函数中插入第一触发函数,所述第一触发函数在创建全局对象时触发并调用存储函数,所述存储函数存储内存分配函数为全局对象所分配的内存地址或指针;
创建第二触发函数,所述第二触发函数在程序模块退出时触发并调用内存释放函数,所述内存释放函数读取存储函数存储的内存地址或指针并释放全局对象所占的内存。
在上述技术方案的基础上,在C++/C#语言下,重新定义new函数,创建全局对象时触发OnObjectCreated函数,所述OnObjectCreated函数在触发后调用存储函数,程序模块退出时触发AtExitManager函数,所述AtExitManager函数在触发后调用内存释放函数。
在上述技术方案的基础上,使用RegisterCallback函数存储内存分配函数为全局对象所分配的内存地址或指针,使用DeleteAllObject函数释放内存。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810403703.7/2.html,转载请声明来源钻瓜专利网。