一种嵌入式系统内存统计方法及装置的制作方法

文档序号:6437480阅读:228来源:国知局
专利名称:一种嵌入式系统内存统计方法及装置的制作方法
技术领域
本发明涉及嵌入式系统技术,尤其涉及一种嵌入式系统内存统计方法及装置。
技术背景
嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。随着嵌入式系统实现功能越来越丰富,系统中运行的任务的数量和复杂性的迅速提高,嵌入式系统的内存使用效率就成为了嵌入式系统性能的关键指标之一, 这就需要系统具有良好的内存统计的方法用来辅助开发、分析系统中各模块的内存使用情况、评估系统性能,以及在内存使用产生异常,如算法缺陷导致内存占用过多,内存泄漏时提供必要的信息给系统用来定位相关模块。
要想对嵌入式系统内存的使用进行有效管理,首先就需要对内存的使用情况进行准确的统计。然而在现有技术中,对于嵌入式系统的内存统计都只限于对系统中单个线程的内存的使用总量进行统计,而不能对每个线程在统中不同大小的内存使用进行有效记录,而现有这种方法占用系统资源多,统计过程影响系统业务的正常运行。发明内容
本发明提供嵌入式系统内存统计方法,包括在系统内存缓冲池内添加内存使用记录块,之后提取缓冲池中内存使用记录块上数据,建立内存使用数据库并输出各线程内存使用数据。
所述缓冲池的数据结构中包括缓冲池名称,缓冲池分配的内存大小、缓冲池内存数量及线程内存记录块链表四个部分。在线程首次申请内存时,在对其内存大小对应的缓冲池的所述内存记录块链表中创建一个内存使用记录块,该记录块初始值为零。而线程再次申请所述缓冲池中内存时,在所述内存使用记录块中累加申请量。
内存记录块上提取的数据以二维数据格式整理成所述内存数据库。并将所述内存数据库中数据根据系统内缓冲池进行分页统计,并按各缓冲池数据库进行分页输出。
一种嵌入式系统内存统计装置所述装置包括
内存使用记录块添加模块,用以在缓冲池内为各线程建立相对应的内存使用记录块。内存使用记录块数据提取模块,用以提取系统中各内存使用记录块上内存使用数据,并根据提取数据生成相应的内存使用数据库。内存使用记录块数据输出模块,用以输出内存使用数据库中数据。
本发明将嵌入式系统中的内存使用统计数据细致到各大小的内存对象,统计数据里包含了每个线程中各大小内存对象的申请情况。另外,使用本发明的统计方法,还可以提高效率,在统计线程中不同大小的内存对象时只需要读取每个缓冲池的该线程记录块里的统计值,无需要遍历内存对象,统计数据的收集对系统的持续运行影响很小。同时,在实现本发明对于系统中的上层应用程序来说无需进行任何修改。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明嵌入式系统内存统计方法的流程图2为本发明缓冲池的数据结构示意图3为本发明实施例提供的装置的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的嵌入式系统内存统计方法的流程图。如图1所示, 本实施例的统计方法包括
步骤101、在内存缓冲池内添加内存使用记录块。
本实施例的统计方法用于实现嵌入式系统内存的统计,首先需要为系统内缓冲池针对不同线程使用不同大小内存情况建立使用记录块,用以记录系统内各线程对某一特定大小的内存对象的申请量。
进一步地,本实施例提供的内存统计方法中每个系统内存的统计信息都是以缓冲池为单位进行统计的,所以本发明实施例还可以包括如下步骤为了更好地提高内存分配效率在系统内建立缓冲池,也就是将系统内存划分成大小不等的多种内存对象,其中相同大小的内存对象集合成一个缓冲池。并对每一个划分出来的缓冲池进行初始化,为每个缓冲池分别命名,并建立该缓冲池自己的数据结构,以便线程进行有效访问。具体地,本实施例缓冲池建立的数据结构包括如图2所示的信息,S卩,缓冲池名称,缓冲池分配的内存大小、缓冲池内存数量及线程内存记录块链表。其中,所述缓冲池内存大小在本实施例中可为 32Byte,64Byte,128Byte,lM及2M内存。所述缓冲池内存数量即为缓冲池中包含同一大小内存块的数量。
进一步,在本实施例的系统中,如一个线程第一次准备使用USByte大小的内存时,所述内存会根据缓冲池数据结构中对应的内存大小处找到128Byte内存对应的正确缓冲池,并在线程内存记录块链表中创建一个内存使用记录块,该记录块初始值为零,当该线程申请到所需内存后,内存使用记录块的值增加。
如同一个线程后续多次申请使用128Byte内存,都需要访问上一步中所述的缓冲池,但此时,不再在该缓冲池内新建所述的内存使用记录块,而是在该线程在所述缓冲池内对应的内存使用记录块中依次累加内存的申请量。如该线程在前一步的基础上又再次申请使用128Byte内存,则在系统处理该内存使用申请后,所述内存使用记录块值就需要在原有数据基础上再增加1,并将此时累计的数值作为最终记录结果。如上所述,系统会根据线程每次内存申请,分次重复完成上述步骤,即进行一次所述内存申请,更新一次内存使用记录块上的记录值。
优选地,在本实施例中,系统的每个缓冲池里内存使用记录块个数最多为系统的线程个数上限。因为一个特定系统可以处理的线程数是确定不变的,所以此处,内存使用记录块数量也是可以确定上限的,所述记录块对内存的最大额外消耗也是可确定的,而且每个线程在每个缓冲池里只有一个内存使用记录块,相对线程本身占用的内存而言,记录块的内存使用是很小的,在可接受的范围。
在此说明,具有任意一种数据结构的缓冲池都可以适用于本发明各实施例,并不限于在本实施例中所涉及的这一种方式。
步骤102、提取缓冲池中内存使用记录块上数据建立内存使用数据库。
在本实施例中,当系统接收到用户要求对内存使用情况进行统计的指令后,将首先遍历系统中各缓冲池,查看系统内使用过的内存缓冲池记录,并从这些缓冲池中提取出相应应用线程在相应缓冲池中记录的内存使用记录块数据,并就这些数据建立数据库以便对提取数据进行整理收集。优选地,当系统中线程需要对其内存使用情况进行统计时,在本实施例中,系统不再要遍历全部内存,只需要先查找到线程使用过的内存对象关联的内存缓冲池,再通过扫描该内存缓冲池中所述线程在其上增加的使用记录块,提取对应数据,再根据从各缓冲池中提取的记录数据,构建易于用户读取的数据库。
所述数据库,在本发明实施例中,优选地方式是将所有收集到的数据以如下所示的二维数据格式整理成数据库。
线程1线程2线程3线程N总计缓冲池1记录块记录值记录块记录值记录块记录值录块记录值池中总值缓冲池2记录块记录值记录块记录值记录块记录值记录块记录值池中总值缓冲池3记录块记录值记录块记录值记录块记录值记录块记录值池中总值总计线程总量线程总量线程总量线程总量总计
表1各线程在缓冲池中的内存使用记录块中的统计数据统计表
在本实施例中,所述表1中的每一行是一个缓冲池中各线程在内存记录块中记录的申请过的内存个数乘以内存对象大小,最后一行为每个线程的申请内存的总量,每一列是一个线程在各个缓冲池的内存申请量,即内存申请个数乘以内存对象大小的值,最后一列则为系统内所有缓冲池的申请内存总数。
本领域普通技术人员可以理解实现上任何一种可读性良好的表格数据都可以用来整理所述的各缓冲池中线程内存使用记录块的数据,这些数据的整理方式都可以全部或部分步骤可以通过程序指令相关的硬件来完成,相应数据可以存储于一计算机可读取存储介质中以相应程序进行运行,而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
步骤103、输出各线程内存使用数据
本实施例中,生成如表1所示的数据后,即可以将上述统计出的内存使用数据库作为结果输出。用于户进行系统内存使用情况分析,判断内存泄漏等问题。
优选地,可以按照上述建立的如表1所示的内存使用数据库格式将各线程的内存使用数据统计结果输出给系统的缓冲区、屏幕或者特设的用于显示内存使用状态的分析文件中。
进一步地,为了更好地输出系统中全部线程内存使用数据统计结果,便于用户查询,可以将表1中的数据在系统中进行分页输出,输出方式可以通过程序指令相关的硬件来完成。
此时,优选地,针对系统中各缓冲池中各线程统计数据分别建立缓冲池数据库,对于所述数据库进行分页输出,每个分页中包含M个线程的记录块记录值,在本实施例中,M 可优选地根据网络设备的宽度,预设为每个输出页面记录8个线程数据。所述数据库的格式如表2所示。
权利要求
1.一种嵌入式系统内存统计方法,其特征在于,包括如下步骤在系统内存缓冲池内添加内存使用记录块;提取缓冲池中内存使用记录块上数据,建立内存使用数据库;输出各线程内存使用数据。
2.如权利要求1所述的统计方法,其特征在于,所述缓冲池的数据结构中包括缓冲池名称,缓冲池分配的内存大小、缓冲池内存数量及线程内存记录块链表四个部分。
3.如权利要求2所述的统计方法,其特征在于,线程在申请内存时,在对其内存大小对应的缓冲池的所述缓冲池管理结构中创建一个该线程的内存使用记录块,内存记录块中记录线程申请的内存个数乘以内存对象大小的值,该记录块初始值为零。
4.如权利要求3所述的统计方法,其特征在于,所述线程再次申请所述缓冲池中内存时,在所述内存使用记录块中累加申请量。
5.如权利要求4所述的统计方法,其特征在于,所述缓冲池中的内存使用记录块个数最多为系统线程个数的上限。
6.如权利要求1所述的统计方法,其特征在于,将所述内存记录块上提取的数据以二维数据格式整理成所述内存数据库。
7.如权利要求6所述的统计方法,其特征在于,将所述内存数据库中数据根据系统内缓冲池进行分页统计,并按各缓冲池数据库进行分页输出。
8.如权利要求7所述的统计方法,其特征在于,将所述缓冲数据库中使用至少一个索引,用以指引每页输出统计数据的线程。
9.一种嵌入式系统内存统计装置,其特征在于,所述装置包括内存使用记录块添加模块,用以在缓冲池内为各线程建立相对应的内存使用记录块;内存使用记录块数据提取模块,用以提取系统中各内存使用记录块上内存使用数据, 并根据提取数据生成相应的内存使用数据库;内存使用记录块数据输出模块,用以输出内存使用数据库中数据。
10.如权利要求9所述的装置,其特征在于,所述内存使用记录块添加模块用以在线程首次申请缓冲池中内存时,在缓冲池中建立内存使用记录块,并初始化该记录块,当所述线程再次申请所述内存时,在所述内存使用记录块中累计计算内存申请量。
11.如权利要求9所述的装置,其特征在于,所述内存使用记录块数据提取模块,用以以二维数据库模式统计从内存使用记录块上读取的数据。
12.如权利要求9所述的装置,其特征在于,在所述内存使用记录块数据输出模块,用以分页输出各所述缓冲池数据库。
全文摘要
本发明提供一种嵌入式系统内存统计方法及装置,其中方法包括,在系统内存缓冲池内添加相应各线程的内存使用记录块,在线程申请该缓冲池中内存时,所述内存使用记录块数据累计增加。提取缓冲池中内存使用记录块上数据时,建立二维的内存使用数据库,并对相应数据进行分页输出。相应装置包括,内存使用记录块添加模块,用以在缓冲池内为各线程建立相对应的内存使用记录块;内存使用记录块数据提取模块,用以提取系统中各内存使用记录块上内存使用数据,并根据提取数据生成相应的内存使用数据库;内存使用记录块数据输出模块,用以输出内存使用数据库中数据。
文档编号G06F11/34GK102495788SQ20111034520
公开日2012年6月13日 申请日期2011年11月4日 优先权日2011年11月4日
发明者薛繁平 申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1