System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 进程间通信的内存分配方法、电子设备及存储介质组成比例_技高网

进程间通信的内存分配方法、电子设备及存储介质组成比例

技术编号:40711849 阅读:3 留言:0更新日期:2024-03-22 11:13
本申请提供一种进程间通信的内存分配方法、电子设备及存储介质,涉及通信技术领域。电子设备的物理内存包括用于binder通信的预设缓存池以及预设缓存池之外的第一内存空间。电子设备接收第一进程发起的第一binder通信指令。响应于该第一binder通信指令,电子设备可以获取物理内存分配的负载状态和第一进程所运行的工作线程的线程信息。若负载状态为第一状态,且第一进程运行的工作线程是目标线程,则在预设缓存池中分配第一进程与第二进程通信所需的内存空间。如此,可以降低高负载状态下binder通信的物理内存分配的时延,降低binder通信的物理内存分配阻塞关键进程的可能。

【技术实现步骤摘要】

本申请实施例涉及通信,尤其涉及一种进程间通信的内存分配方法、电子设备及存储介质


技术介绍

1、安卓(android)系统架构中进程间通信机制包括多种。例如,管道、消息队列、共享内存等进程间通信机制。binder通信是android系统架构中的一种进程间通信机制。

2、利用binder机制,每次进程间通信仅涉及一次通信数据的复制,可以提升进程间通信的性能。目前,binder通信在android系统架构中发生的频率很高,在一些场景中,binder通信的发生频率可达每秒3000次以上。在每次binder通信过程中,binder驱动会申请一块物理内存用于存放通信数据。然后binder通信的目的进程可以访问物理内存中存放的通信数据,实现进程间通信。

3、但是,在一些情况下,binder通信过程中内存分配的时延较大,可能会导致系统卡顿等性能问题。


技术实现思路

1、本申请实施例提供一种进程间通信的内存分配方法、电子设备及存储介质,可以降低binder通信中内存分配的时延,优化系统性能。

2、为达到上述目的,本申请的实施例采用如下技术方案:

3、第一方面,提供了一种进程间通信的内存分配方法,应用于电子设备,该电子设备的物理内存包括用于binder通信的预设缓存池以及预设缓存池之外的第一内存空间。该方法包括:

4、电子设备接收第一进程向第二进程发起的第一binder通信指令。响应于该第一binder通信指令,电子设备获取物理内存分配的负载状态以及第一进程所运行的工作线程的线程信息。该线程信息用于指示工作线程是否是目标线程。如果该负载状态是第一状态且第一进程所运行的工作线程是目标线程,表明电子设备当前物理内存分配的高负载状态,并且,电子所运行的第一进程中的工作线程是对电子设备的系统性能有明显影响的关键进程(例如,一些影响用户体验的用户线程等)。此时,电子设备的空闲内存量小于第一预设阈值,或者binder通信的内存分配时延参数大于第二预设阈值。这种情况下,电子设备则可以在预设缓存池中分配第一进程与第二进程间通信所需的内存空间,以实现第一进程和第二进程之间的进程间通信。

5、通过这种方式,在处于物理内存分配的高负载状态且运行有关键线程的场景下,如游戏场景、拍照场景等,电子设备可以通过预设缓存池立即分配binder通信所需的内存空间(即第一进程与第二进程间通信所需的内存空间),从而可以降低高负载状态下binder通信的物理内存分配的时延,降低binder通信的物理内存分配阻塞关键进程的可能,改善系统卡顿情况,优化系统性能,提供用户体验。

6、在第一方面的另一种可能的实现方式中,在获取物理内存分配的负载状态和第一进程所运行的工作线程的线程信息之前,电子设备还可以统计当前时刻之前预设次数的binder通信中内存分配所耗费的总时长,然后利用预设次数对总时长进行平均,得到binder通信的内存分配时延参数。

7、该实现方式中提供了一种内存分配时延参数的确定方法,即该内存分配时延参数可以是多次binder通信的内存分配的平均时延,如10次binder通信的内存分配的平均时延。通过这种方式,内存分配时延参数可以反映binder通信中内存分配耗时的集中趋势。

8、在第一方面的另一种可能的实现方式中,上述线程信息包括内存耗尽参数和线程等级。该内存耗尽参数用于表示在第一内存空间的空闲内存量小于第一预设内存量的情况下一个线程被强制终止的可能性。该线程等级与工作线程的重要程度负相关。若第一进程所运行的工作线程的内存耗尽参数小于或等于第三预设阈值,或者,该工作线程的线程等级小于或等于第四预设阈值,则工作线程是目标线程。若该工作线程的内存耗尽参数大于第三预设阈值,并且,工作线程的线程等级大于第四预设阈值,则工作线程不是目标线程。

9、该实现方式中,电子设备可以通过内存耗尽参数以及线程等级中的至少一个参数判断第一进程当前所运行的工作线程是否是目标线程。内存耗尽参数和线程等级均与工作线程的重要程度相关,从而可以通过内存耗尽参数和线程等级中的任意一项准确地识别目标线程。

10、在第一方面的另一种可能的实现方式中,若上述工作线程不是目标线程,则在第一内存空间中分配第一进程与第二进程通信所需的内存空间。

11、该实现方式中,由于第一进程未运行目标线程,即使本次binder通信的内存分配可能会阻塞第一进程所运行的工作线程,但对系统性能影响较小,用户难以察觉该影响。这种情况下,电子设备可以在第一内存空间中分配第一进程与第二进程所需的内存空间,实现第一进程和第二进程的binder通信。

12、在第一方面的另一种可能的实现方式中,在第一进程和第二进程通信结束之后,将为第一进程与第二进程通信分配的内存空间回收至预设缓存池。

13、通过这种方式,电子设备可以优先将分配出去的binder通信的内存空间回收至预设缓存池,使预设缓存池中存在可分配的内存空间,从而电子设备在处于物理内存分配的高负载状态且运行有目标线程的情况下,可以通过预设缓存池立即为binder通信分配内存空间。

14、在第一方面的另一种可能的实现方式中,若上述负载状态为第二状态,则在第一内存空间中分配第一进程与第二进程通信所需的内存空间。该负载状态为第二状态表示第一内存空间的空闲内存量大于或等于第一预设阈值,且内存分配时延参数小于或等于第二预设阈值。

15、该实现方式中,负载状态为第二状态表示电子设备处于物理内存分配的低负载状态,第一内存空间中可分配的内存空间充足,binder通信的内存分配时延较小。电子设备则通过第一内存空间提供本次binder通信所需的内存空间,在时间延迟上较小,在系统性能造成的影响很小。

16、在第一方面的另一种可能的实现方式中,在物理内存分配的负载状态为第二状态的情况下,获取预设缓存池的空闲内存量。该负载状态为第二状态表示第一内存空间的空闲内存量大于或等于第一预设阈值,且内存分配时延参数小于或等于第二预设阈值。若预设缓存池的空闲内存量小于第五预设阈值,则经过至少一次预设缓存池的添加操作,将第一内存空间中的部分内存空间从第一内存空间添加到预设缓存池。

17、通过这种方式,电子设备可以在处于物理内存分配的低负载状态下,如果预设缓存池中的空闲内存量不足,则可以通过第一内存空间添加预设缓存池的空闲内存量,使预设缓存池中可分配的内存空间保持在合适的内存量,同时减小对第一内存空间的影响。

18、在第一方面的另一种可能的实现方式中,经过至少一次预设缓存池的添加操作,电子设备将第一内存空间中的部分内存空间从第一内存空间添加到预设缓存池,直到预设缓存池的空闲内存量达到第六预设阈值。在至少一次预设缓存池的添加操作中的每次添加操作中,预设缓存池中增加的内存量等于第二预设内存量。

19、该实现方式中,在预设缓存池填充的过程中,预设缓存池每次增加的内存量始终等于第二预设内存量。如此,本文档来自技高网...

【技术保护点】

1.一种进程间通信的内存分配方法,其特征在于,应用于电子设备,所述电子设备的物理内存包括用于binder通信的预设缓存池以及所述预设缓存池之外的第一内存空间;所述电子设备还包括第一进程和第二进程;所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述获取所述物理内存分配的负载状态和所述第一进程所运行的工作线程的线程信息之前,还包括:

3.根据权利要求1或2所述的方法,其特征在于,所述线程信息包括内存耗尽参数和线程等级;

4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:

5.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:

6.根据权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:

7.根据权利要求1-6中任一项所述的方法,其特征在于,所述方法还包括:

8.根据权利要求7所述的方法,其特征在于,所述经过至少一次预设缓存池的添加操作,将所述第一内存空间中的部分内存空间从所述第一内存空间添加到所述预设缓存池,包括:

9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:

10.根据权利要求1-8中任一项所述的方法,其特征在于,所述方法还包括:

11.一种电子设备,其特征在于,包括:存储器和一个或多个处理器;所述存储器与所述处理器耦合;所述存储器的物理内存包括用于binder通信的预设缓存池以及所述预设缓存池之外的第一内存空间;其中,所述存储器中存储有计算机程序代码,所述计算机程序代码包括计算机指令,当所述计算机指令被所述处理器执行时,使得所述电子设备执行如权利要求1-10中任一项所述的方法。

12.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-10中任一项所述的方法。

...

【技术特征摘要】

1.一种进程间通信的内存分配方法,其特征在于,应用于电子设备,所述电子设备的物理内存包括用于binder通信的预设缓存池以及所述预设缓存池之外的第一内存空间;所述电子设备还包括第一进程和第二进程;所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述获取所述物理内存分配的负载状态和所述第一进程所运行的工作线程的线程信息之前,还包括:

3.根据权利要求1或2所述的方法,其特征在于,所述线程信息包括内存耗尽参数和线程等级;

4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:

5.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:

6.根据权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:

7.根据权利要求1-6中任一项所述的方法,其特征在于,所述方法还包括:

8.根据权利要求7所述的方...

【专利技术属性】
技术研发人员:马超
申请(专利权)人:荣耀终端有限公司
类型:发明
国别省市:

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

1