System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,尤其涉及一种车辆控制系统内存分析方法、装置、电子设备及存储介质。
技术介绍
1、车辆系统中运行多个应用程序,这些应用程序会占用系统内存,因此在系统运行时需为每个应用程序分配动态内存——堆对象,堆对象是指用动态存储分配函数动态开辟的空间,在使用完后占用的内存会被释放。堆对象的分配和使用,会直接影响系统整体或各程序的运作情况,若动态内存分配不当,发生内存泄漏的情况,则会导致内存空间变小,长此以往可能导致程序运行卡顿甚至系统宕机,影响车辆的安全。相关技术中,使用perf工具或valgrind工具进行内存调试、内存泄漏检测和性能分析,但这些分析工具与内存分配器共用相同内存空间,在收集内存使用情况时也会占用很大内存开销,从而影响内存分配正常进行,并且,这些分析工具只能针对每个应用程序在程序运行结束后输出内存占用情况,不适用于对实时性要求较高的车辆控制系统中。
技术实现思路
1、本专利技术提供一种车辆控制系统内存分析方法、装置、电子设备及存储介质,用以解决传统内存分析工具自身也占用很大的内存开销,并且,只能针对每个应用程序在程序运行结束后输出内存占用情况,不适用于对实时性要求较高的车辆控制系统中的缺陷。
2、本专利技术提供一种车辆控制系统内存分析方法,包括:
3、在与内存分配器所在地址空间不同的地址范围中开辟内存空间创建内存管理哈希表;
4、截获每个应用程序对应的堆对象的实际使用情况,并存入所述内存管理哈希表;
5、在每个软
6、根据本专利技术提供的一种车辆控制系统内存分析方法,所述每个应用程序对应的堆对象的实际使用情况在所述内存管理哈希表中的存储位置获取方法,包括:
7、获取每个应用程序对应原始函数的返回虚拟地址;
8、根据所述虚拟地址和虚拟页面大小确定虚拟页面索引;
9、获取散列长度;
10、将所述虚拟页面索引对所述散列长度取余操作得到的余数作为每个堆对象实际使用情况在哈希表中的起始存储地址。
11、根据本专利技术提供的一种车辆控制系统内存分析方法,所述获取散列长度,包括:
12、获取堆内存的最大使用量;
13、根据所述堆内存的最大使用量计算散列长度的理论最小值;
14、将不小于所述散列长度的理论最小值的素数作为散列长度。
15、根据本专利技术提供的一种车辆控制系统内存分析方法,还包括:
16、获取每个软件周期内使用标准模板库或智能指针的应用程序运行所产生的内存分配和解除分配的记录;
17、重放所述应用程序运行所产生的内存分配和解除分配的记录,筛选出与标准模板库/智能指针无关的记录;
18、将所述应用程序运行所产生的内存分配和解除分配的记录与所述与标准模板库/智能指针无关的记录之间的差异内容作为与标准模板库/智能指针相关的记录,以根据所述与标准模板库/智能指针相关的记录获取所述标准模板库/智能指针在每个软件运行周期内占用内存情况。
19、根据本专利技术提供的一种车辆控制系统内存分析方法,所述获取每个软件周期内使用标准模板库的应用程序运行所产生的内存分配和解除分配的记录,包括:
20、在标准模板库中定义全局容器变量,将所述全局容器变量作为埋点供应用程序回调函数调用,以根据所述回调函数获取每个软件周期内使用标准模板库的应用程序运行所产生的内存分配和解除分配的记录。
21、根据本专利技术提供的一种车辆控制系统内存分析方法,所述获取每个软件周期内使用智能指针的应用程序运行所产生的内存分配和解除分配的记录,包括:
22、在每个智能指针的基类构造函数中添加一个可选的布尔型变量参数;
23、在每个智能指针类构造函数中,增加返回函数以使布尔型变量参数值返回到目标智能指针类中;
24、通过获取目标智能指针类中布尔型变量参数值,获取每个软件周期内使用智能指针的应用程序运行所产生的内存分配和解除分配的记录。
25、根据本专利技术提供的一种车辆控制系统内存分析方法,所述截获每个应用程序对应的堆对象的实际使用情况,包括:
26、通过更新包裹函数中的计数器的计数值跟踪每个应用程序对应的堆对象的内存分配和内存解除分配的数量;
27、调用malloc_usable_size函数获取每个应用程序对应的堆对象的内存分配和内存解除分配大小,根据所述堆对象的内存分配和内存解除分配的数量计算出堆对象的实际使用情况。
28、本专利技术还提供一种车辆控制系统内存分析装置,包括:
29、创建模块,用于在与内存分配器所在地址空间不同的地址范围中开辟内存空间创建内存管理哈希表;
30、截获模块,用于截获每个应用程序对应的堆对象的实际使用情况,并存入所述内存管理哈希表;
31、获取模块,用于在每个软件运行周期内,根据所述内存管理哈希表中每个堆对象的实际使用情况获取系统内存占用情况。
32、本专利技术还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述的车辆控制系统内存分析方法。
33、本专利技术还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的车辆控制系统内存分析方法。
34、本专利技术提供的一种车辆控制系统内存分析方法、装置、电子设备及存储介质,通过在与内存分配器所在地址空间不同的地址范围中开辟内存空间创建内存管理哈希表;截获每个应用程序对应的堆对象的实际使用情况,并存入内存管理哈希表;在每个软件运行周期内,根据内存管理哈希表中每个堆对象的实际使用情况获取系统内存占用情况,通过在与内存分配器所在地址空间不同的地址范围中开辟内存空间创建内存管理哈希表,可以避免干扰正常软件运行时的内存分配,避免影响原始堆对象布局,提高内存分析实时性,并且可以报告每个软件周期的内存占用情况,有助于用户在特定周期中调试并解决具体问题。
本文档来自技高网...【技术保护点】
1.一种车辆控制系统内存分析方法,其特征在于,包括:
2.根据权利要求1所述的一种车辆控制系统内存分析方法,其特征在于,所述每个应用程序对应的堆对象的实际使用情况在所述内存管理哈希表中的存储位置获取方法,包括:
3.根据权利要求2所述的一种车辆控制系统内存分析方法,其特征在于,所述获取散列长度,包括:
4.根据权利要求1所述的一种车辆控制系统内存分析方法,其特征在于,还包括:
5.根据权利要求4所述的一种车辆控制系统内存分析方法,其特征在于,所述获取每个软件周期内使用标准模板库的应用程序运行所产生的内存分配和解除分配的记录,包括:
6.根据权利要求4所述的一种车辆控制系统内存分析方法,其特征在于,所述获取每个软件周期内使用智能指针的应用程序运行所产生的内存分配和解除分配的记录,包括:
7.根据权利要求1所述的一种车辆控制系统内存分析方法,其特征在于,所述截获每个应用程序对应的堆对象的实际使用情况,包括:
8.一种车辆控制系统内存分析装置,其特征在于,包括:
9.一种电子设备,包括存储器
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的车辆控制系统内存分析方法。
...【技术特征摘要】
1.一种车辆控制系统内存分析方法,其特征在于,包括:
2.根据权利要求1所述的一种车辆控制系统内存分析方法,其特征在于,所述每个应用程序对应的堆对象的实际使用情况在所述内存管理哈希表中的存储位置获取方法,包括:
3.根据权利要求2所述的一种车辆控制系统内存分析方法,其特征在于,所述获取散列长度,包括:
4.根据权利要求1所述的一种车辆控制系统内存分析方法,其特征在于,还包括:
5.根据权利要求4所述的一种车辆控制系统内存分析方法,其特征在于,所述获取每个软件周期内使用标准模板库的应用程序运行所产生的内存分配和解除分配的记录,包括:
6.根据权利要求4所述的一种车辆控制系统内存分析方法,其特征在于...
【专利技术属性】
技术研发人员:李德新,周瑾,
申请(专利权)人:嬴彻星创智能科技上海有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。