CN102495788A - 一种嵌入式系统内存统计方法及装置 - Google Patents
一种嵌入式系统内存统计方法及装置 Download PDFInfo
- Publication number
- CN102495788A CN102495788A CN201110345205XA CN201110345205A CN102495788A CN 102495788 A CN102495788 A CN 102495788A CN 201110345205X A CN201110345205X A CN 201110345205XA CN 201110345205 A CN201110345205 A CN 201110345205A CN 102495788 A CN102495788 A CN 102495788A
- Authority
- CN
- China
- Prior art keywords
- internal memory
- data
- buffer pool
- thread
- service recorder
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种嵌入式系统内存统计方法及装置,其中方法包括,在系统内存缓冲池内添加相应各线程的内存使用记录块,在线程申请该缓冲池中内存时,所述内存使用记录块数据累计增加。提取缓冲池中内存使用记录块上数据时,建立二维的内存使用数据库,并对相应数据进行分页输出。相应装置包括,内存使用记录块添加模块,用以在缓冲池内为各线程建立相对应的内存使用记录块;内存使用记录块数据提取模块,用以提取系统中各内存使用记录块上内存使用数据,并根据提取数据生成相应的内存使用数据库;内存使用记录块数据输出模块,用以输出内存使用数据库中数据。
Description
技术领域
本发明涉及嵌入式系统技术,尤其涉及一种嵌入式系统内存统计方法及装置。
背景技术
嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。随着嵌入式系统实现功能越来越丰富,系统中运行的任务的数量和复杂性的迅速提高,嵌入式系统的内存使用效率就成为了嵌入式系统性能的关键指标之一,这就需要系统具有良好的内存统计的方法用来辅助开发、分析系统中各模块的内存使用情况、评估系统性能,以及在内存使用产生异常,如算法缺陷导致内存占用过多,内存泄漏时提供必要的信息给系统用来定位相关模块。
要想对嵌入式系统内存的使用进行有效管理,首先就需要对内存的使用情况进行准确的统计。然而在现有技术中,对于嵌入式系统的内存统计都只限于对系统中单个线程的内存的使用总量进行统计,而不能对每个线程在统中不同大小的内存使用进行有效记录,而现有这种方法占用系统资源多,统计过程影响系统业务的正常运行。
发明内容
本发明提供嵌入式系统内存统计方法,包括:在系统内存缓冲池内添加内存使用记录块,之后提取缓冲池中内存使用记录块上数据,建立内存使用数据库并输出各线程内存使用数据。
所述缓冲池的数据结构中包括缓冲池名称,缓冲池分配的内存大小、缓冲池内存数量及线程内存记录块链表四个部分。在线程首次申请内存时,在对其内存大小对应的缓冲池的所述内存记录块链表中创建一个内存使用记录块,该记录块初始值为零。而线程再次申请所述缓冲池中内存时,在所述内存使用记录块中累加申请量。
内存记录块上提取的数据以二维数据格式整理成所述内存数据库。并将所述内存数据库中数据根据系统内缓冲池进行分页统计,并按各缓冲池数据库进行分页输出。
一种嵌入式系统内存统计装置所述装置包括:
内存使用记录块添加模块,用以在缓冲池内为各线程建立相对应的内存使用记录块。内存使用记录块数据提取模块,用以提取系统中各内存使用记录块上内存使用数据,并根据提取数据生成相应的内存使用数据库。内存使用记录块数据输出模块,用以输出内存使用数据库中数据。
本发明将嵌入式系统中的内存使用统计数据细致到各大小的内存对象,统计数据里包含了每个线程中各大小内存对象的申请情况。另外,使用本发明的统计方法,还可以提高效率,在统计线程中不同大小的内存对象时只需要读取每个缓冲池的该线程记录块里的统计值,无需要遍历内存对象,统计数据的收集对系统的持续运行影响很小。同时,在实现本发明对于系统中的上层应用程序来说无需进行任何修改。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明嵌入式系统内存统计方法的流程图;
图2为本发明缓冲池的数据结构示意图;
图3为本发明实施例提供的装置的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的嵌入式系统内存统计方法的流程图。如图1所示,本实施例的统计方法包括:
步骤101、在内存缓冲池内添加内存使用记录块。
本实施例的统计方法用于实现嵌入式系统内存的统计,首先需要为系统内缓冲池针对不同线程使用不同大小内存情况建立使用记录块,用以记录系统内各线程对某一特定大小的内存对象的申请量。
进一步地,本实施例提供的内存统计方法中每个系统内存的统计信息都是以缓冲池为单位进行统计的,所以本发明实施例还可以包括如下步骤:为了更好地提高内存分配效率在系统内建立缓冲池,也就是将系统内存划分成大小不等的多种内存对象,其中相同大小的内存对象集合成一个缓冲池。并对每一个划分出来的缓冲池进行初始化,为每个缓冲池分别命名,并建立该缓冲池自己的数据结构,以便线程进行有效访问。具体地,本实施例缓冲池建立的数据结构包括如图2所示的信息,即,缓冲池名称,缓冲池分配的内存大小、缓冲池内存数量及线程内存记录块链表。其中,所述缓冲池内存大小在本实施例中可为32Byte,64Byte,128Byte,1M及2M内存。所述缓冲池内存数量即为缓冲池中包含同一大小内存块的数量。
进一步,在本实施例的系统中,如一个线程第一次准备使用128Byte大小的内存时,所述内存会根据缓冲池数据结构中对应的内存大小处找到128Byte内存对应的正确缓冲池,并在线程内存记录块链表中创建一个内存使用记录块,该记录块初始值为零,当该线程申请到所需内存后,内存使用记录块的值增加。
如同一个线程后续多次申请使用128Byte内存,都需要访问上一步中所述的缓冲池,但此时,不再在该缓冲池内新建所述的内存使用记录块,而是在该线程在所述缓冲池内对应的内存使用记录块中依次累加内存的申请量。如该线程在前一步的基础上又再次申请使用128Byte内存,则在系统处理该内存使用申请后,所述内存使用记录块值就需要在原有数据基础上再增加1,并将此时累计的数值作为最终记录结果。如上所述,系统会根据线程每次内存申请,分次重复完成上述步骤,即进行一次所述内存申请,更新一次内存使用记录块上的记录值。
优选地,在本实施例中,系统的每个缓冲池里内存使用记录块个数最多为系统的线程个数上限。因为一个特定系统可以处理的线程数是确定不变的,所以此处,内存使用记录块数量也是可以确定上限的,所述记录块对内存的最大额外消耗也是可确定的,而且每个线程在每个缓冲池里只有一个内存使用记录块,相对线程本身占用的内存而言,记录块的内存使用是很小的,在可接受的范围。
在此说明,具有任意一种数据结构的缓冲池都可以适用于本发明各实施例,并不限于在本实施例中所涉及的这一种方式。
步骤102、提取缓冲池中内存使用记录块上数据建立内存使用数据库。
在本实施例中,当系统接收到用户要求对内存使用情况进行统计的指令后,将首先遍历系统中各缓冲池,查看系统内使用过的内存缓冲池记录,并从这些缓冲池中提取出相应应用线程在相应缓冲池中记录的内存使用记录块数据,并就这些数据建立数据库以便对提取数据进行整理收集。优选地,当系统中线程需要对其内存使用情况进行统计时,在本实施例中,系统不再要遍历全部内存,只需要先查找到线程使用过的内存对象关联的内存缓冲池,再通过扫描该内存缓冲池中所述线程在其上增加的使用记录块,提取对应数据,再根据从各缓冲池中提取的记录数据,构建易于用户读取的数据库。
所述数据库,在本发明实施例中,优选地方式是将所有收集到的数据以如下所示的二维数据格式整理成数据库。
线程1 | 线程2 | 线程3 | …… | 线程N | 总计 | |
缓冲池1 | 记录块记录值 | 记录块记录值 | 记录块记录值 | …… | 录块记录值 | 池中总值 |
缓冲池2 | 记录块记录值 | 记录块记录值 | 记录块记录值 | …… | 记录块记录值 | 池中总值 |
缓冲池3 | 记录块记录值 | 记录块记录值 | 记录块记录值 | …… | 记录块记录值 | 池中总值 |
总计 | 线程总量 | 线程总量 | 线程总量 | …… | 线程总量 | 总计 |
表1各线程在缓冲池中的内存使用记录块中的统计数据统计表
在本实施例中,所述表1中的每一行是一个缓冲池中各线程在内存记录块中记录的申请过的内存个数乘以内存对象大小,最后一行为每个线程的申请内存的总量,每一列是一个线程在各个缓冲池的内存申请量,即内存申请个数乘以内存对象大小的值,最后一列则为系统内所有缓冲池的申请内存总数。
本领域普通技术人员可以理解:实现上任何一种可读性良好的表格数据都可以用来整理所述的各缓冲池中线程内存使用记录块的数据,这些数据的整理方式都可以全部或部分步骤可以通过程序指令相关的硬件来完成,相应数据可以存储于一计算机可读取存储介质中以相应程序进行运行,而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
步骤103、输出各线程内存使用数据
本实施例中,生成如表1所示的数据后,即可以将上述统计出的内存使用数据库作为结果输出。用于户进行系统内存使用情况分析,判断内存泄漏等问题。
优选地,可以按照上述建立的如表1所示的内存使用数据库格式将各线程的内存使用数据统计结果输出给系统的缓冲区、屏幕或者特设的用于显示内存使用状态的分析文件中。
进一步地,为了更好地输出系统中全部线程内存使用数据统计结果,便于用户查询,可以将表1中的数据在系统中进行分页输出,输出方式可以通过程序指令相关的硬件来完成。
此时,优选地,针对系统中各缓冲池中各线程统计数据分别建立缓冲池数据库,对于所述数据库进行分页输出,每个分页中包含M个线程的记录块记录值,在本实施例中,M可优选地根据网络设备的宽度,预设为每个输出页面记录8个线程数据。所述数据库的格式如表2所示。
线程1记录块记录值 | 线程2记录块记录值 | …… | 线程8记录块记录值 | |
缓冲池1 | 记录块记录值 | 记录块记录值 | …… | 记录块记录值 |
缓冲池2 | 记录块记录值 | 记录块记录值 | …… | 记录块记录值 |
表2各缓冲池内存使用记录块中的统计数据统计表
其中,表2以系统中一个内存缓冲池各线程内存使用数据统计结果为例,其它缓冲池内存使用数据统计也可采用相同结构进行整理,当同一缓冲池内线程使用记录块过多时,为方便用户统计也按分进行数据输出。表2所述数据结构中每页的第一列为缓冲池的名字,从第二列开始以后的各列为每个线程在该缓冲池中使用内存记录快的记数据。更具体的,采用分页输出的方法,缓冲池数据库格式为就是将每页输出的格式定为第一行为线程名称,第一列为缓冲池名称,如本实施例中设定的第一页输出8个线程的数据,则最终输出的数据库格式如表2所示。第二页输出的内容是第9个线程开始继续后8个线程的数据,则第二页输出的第一行为第9到第16个线程的名称,第一列的缓冲池名称不变。以此类推。对于所述数据库的输出方式,采用首先输出当前页第一行线程名称,输出第二行时,则先输出缓冲池名字,再输出第一行线程所对应的数据。而如表1中所示的最后一行的每个线程的申请总量在每页最后一行输出,而如表1中所示的最后一列的缓冲池申请总量也被当作一个线程,在最后一页的最后一列进行输出。
进一步地,系统可以在缓冲池数据库中使用一个索引,当读取所述数据库时,每当输出完一页中的线程内存使用数据,索引值往后偏移M个线程,M为上述所提到的每页包含的线程数。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图3为为本发明实施例提供的装置的结构图,如图所示,内存统计的装置包括:
内存使用记录块添加模块,用以在缓冲池内为各线程建立相对应的内存使用记录块。
内存使用记录块数据提取模块,以提取系统中各内存使用记录块上内存使用数据,并根据提取数据生成相应的内存使用数据库。
内存使用记录块数据输出模块,用以输出内存使用数据库中数据。
所述内存使用记录块添加模块用以在线程首次申请缓冲池中内存时,在缓冲池中建立内存使用记录块,并初始化该记录块,当所述线程再次申请所述内存时,在内存使用记录块中累计计算内存申请量。从缓冲池中提取出的内存使用记录块数据将以二维数据库模式进行统计,所述数据输出时,可以优选地采用将所述各缓冲池内线程内存使用数据单独进行整理,构建相应缓冲池数据库,并分页进行输出。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (12)
1.一种嵌入式系统内存统计方法,其特征在于,包括如下步骤:
在系统内存缓冲池内添加内存使用记录块;
提取缓冲池中内存使用记录块上数据,建立内存使用数据库;
输出各线程内存使用数据。
2.如权利要求1所述的统计方法,其特征在于,所述缓冲池的数据结构中包括缓冲池名称,缓冲池分配的内存大小、缓冲池内存数量及线程内存记录块链表四个部分。
3.如权利要求2所述的统计方法,其特征在于,线程在申请内存时,在对其内存大小对应的缓冲池的所述缓冲池管理结构中创建一个该线程的内存使用记录块,内存记录块中记录线程申请的内存个数乘以内存对象大小的值,该记录块初始值为零。
4.如权利要求3所述的统计方法,其特征在于,所述线程再次申请所述缓冲池中内存时,在所述内存使用记录块中累加申请量。
5.如权利要求4所述的统计方法,其特征在于,所述缓冲池中的内存使用记录块个数最多为系统线程个数的上限。
6.如权利要求1所述的统计方法,其特征在于,将所述内存记录块上提取的数据以二维数据格式整理成所述内存数据库。
7.如权利要求6所述的统计方法,其特征在于,将所述内存数据库中数据根据系统内缓冲池进行分页统计,并按各缓冲池数据库进行分页输出。
8.如权利要求7所述的统计方法,其特征在于,将所述缓冲数据库中使用至少一个索引,用以指引每页输出统计数据的线程。
9.一种嵌入式系统内存统计装置,其特征在于,所述装置包括:
内存使用记录块添加模块,用以在缓冲池内为各线程建立相对应的内存使用记录块;
内存使用记录块数据提取模块,用以提取系统中各内存使用记录块上内存使用数据,并根据提取数据生成相应的内存使用数据库;
内存使用记录块数据输出模块,用以输出内存使用数据库中数据。
10.如权利要求9所述的装置,其特征在于,所述内存使用记录块添加模块用以在线程首次申请缓冲池中内存时,在缓冲池中建立内存使用记录块,并初始化该记录块,当所述线程再次申请所述内存时,在所述内存使用记录块中累计计算内存申请量。
11.如权利要求9所述的装置,其特征在于,所述内存使用记录块数据提取模块,用以以二维数据库模式统计从内存使用记录块上读取的数据。
12.如权利要求9所述的装置,其特征在于,在所述内存使用记录块数据输出模块,用以分页输出各所述缓冲池数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110345205.XA CN102495788B (zh) | 2011-11-04 | 2011-11-04 | 一种嵌入式系统内存统计方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110345205.XA CN102495788B (zh) | 2011-11-04 | 2011-11-04 | 一种嵌入式系统内存统计方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102495788A true CN102495788A (zh) | 2012-06-13 |
CN102495788B CN102495788B (zh) | 2015-02-25 |
Family
ID=46187613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110345205.XA Active CN102495788B (zh) | 2011-11-04 | 2011-11-04 | 一种嵌入式系统内存统计方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102495788B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700952A (zh) * | 2014-11-26 | 2016-06-22 | 中兴通讯股份有限公司 | 嵌入式系统内存统计方法及装置 |
CN111191082A (zh) * | 2019-12-23 | 2020-05-22 | 宁波港信息通信有限公司 | 数据管理方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1828550A (zh) * | 2005-02-28 | 2006-09-06 | 中国科学院计算技术研究所 | 一种内存访问信息实时捕获装置及访存信息捕获方法 |
CN1904850A (zh) * | 2006-08-04 | 2007-01-31 | 上海科泰世纪科技有限公司 | 对嵌入式操作系统的性能信息进行实时监测的方法 |
CN1936859A (zh) * | 2005-09-30 | 2007-03-28 | 康佳集团股份有限公司 | 一种内存监控方法 |
CN101320348A (zh) * | 2008-06-25 | 2008-12-10 | 中兴通讯股份有限公司 | 一种嵌入式系统的日志功能实现方法 |
US20090094487A1 (en) * | 2007-10-03 | 2009-04-09 | Lance Flake | Multiple winner arbitration |
-
2011
- 2011-11-04 CN CN201110345205.XA patent/CN102495788B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1828550A (zh) * | 2005-02-28 | 2006-09-06 | 中国科学院计算技术研究所 | 一种内存访问信息实时捕获装置及访存信息捕获方法 |
CN1936859A (zh) * | 2005-09-30 | 2007-03-28 | 康佳集团股份有限公司 | 一种内存监控方法 |
CN1904850A (zh) * | 2006-08-04 | 2007-01-31 | 上海科泰世纪科技有限公司 | 对嵌入式操作系统的性能信息进行实时监测的方法 |
US20090094487A1 (en) * | 2007-10-03 | 2009-04-09 | Lance Flake | Multiple winner arbitration |
CN101320348A (zh) * | 2008-06-25 | 2008-12-10 | 中兴通讯股份有限公司 | 一种嵌入式系统的日志功能实现方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700952A (zh) * | 2014-11-26 | 2016-06-22 | 中兴通讯股份有限公司 | 嵌入式系统内存统计方法及装置 |
CN111191082A (zh) * | 2019-12-23 | 2020-05-22 | 宁波港信息通信有限公司 | 数据管理方法、装置、计算机设备和存储介质 |
CN111191082B (zh) * | 2019-12-23 | 2023-09-05 | 宁波港信息通信有限公司 | 数据管理方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102495788B (zh) | 2015-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103218435B (zh) | 一种中文文本数据聚类方法及系统 | |
US20120265720A1 (en) | Infrastructure and architecture for development and execution of predictive models | |
CN103345484A (zh) | 基于动态域的报表处理系统及方法 | |
CN105631003A (zh) | 支持海量数据分组统计的智能索引构建、查询及维护方法 | |
CN102999506A (zh) | 一种获取用户独立访问数的方法与装置 | |
CN106899426A (zh) | 用户访问数量统计方法及其系统 | |
CN107870981A (zh) | 电子装置、数据表归档处理的方法及存储介质 | |
CN101446962A (zh) | 一种数据转换方法、装置及数据处理系统 | |
CN101650709A (zh) | 报表生成方法和报表系统 | |
CN102024062A (zh) | 一种实现数据动态缓存处理的装置及方法 | |
CN107391532B (zh) | 数据过滤的方法和装置 | |
CN103116832A (zh) | 一种分组汇总生成业务单据的方法及装置 | |
CN111752944B (zh) | 数据分摊方法、装置、计算机设备及存储介质 | |
CN109190025A (zh) | 信息监控方法、装置、系统和计算机可读存储介质 | |
CN108009290A (zh) | 一种轨道交通指挥中心线网大数据的数据建模和存储方法 | |
CN101719131B (zh) | 一种报表数据的处理方法、装置和系统 | |
CN106844320A (zh) | 一种财务报表整合方法和设备 | |
CN103440197B (zh) | 一种基于对比测试自动生成差异测试报告的方法 | |
CN115292754A (zh) | 一种征信平台信用数据风险监控方法 | |
CN103207804B (zh) | 基于集群作业日志的MapReduce负载模拟方法 | |
CN102456176B (zh) | 一种物料清单工程变更的方法及装置 | |
CN102495788A (zh) | 一种嵌入式系统内存统计方法及装置 | |
CN110895562A (zh) | 反馈信息处理方法及装置 | |
CN113449208B (zh) | 空间查询方法、设备、系统及存储介质 | |
CN110019195A (zh) | 一种数据的存储方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |