System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请实施例涉及电子,并且更具体地,涉及一种内存管理方法、内存管理装置和电子设备。
技术介绍
1、在应用进行后台时,操作系统在内存紧张时,可以通过各种方式进行内存回收,例如通过页丢弃、页交换、页回写等方式进行内存回收,从而缓解内存压力。
2、在视频播放场景下涉及了较多的输入输出缓存,在视频进入后台之后相关的缓存不会析构,仍然持续占用着较多的物理内存,导致电子设备随着用户打开视频类应用的数量的增加而内存越来越少。且视频应用和媒体模块调用的硬件解码器通常共享物理内存,操作系统没有针对共享内存的内存回收机制。
技术实现思路
1、本申请实施例提供一种内存管理方法、内存管理装置和电子设备,能够在视频播放进入后台时,回收视频解码涉及的缓存,如果播放视频的应用后续返回前台,也不会影响视频的正常播放,提高用户的体验感。
2、第一方面,提供了一种内存管理方法,用于电子设备,包括:接收用户的第一输入,所述第一输入用于使得第一应用进入后台状态;拦截与第一缓存集合中的缓存的访问相关的接口,所述第一缓存集合中的缓存属于与所述第一应用播放的第一视频解码相关的缓存;回收所述第一缓存集合中的缓存对应的物理内存。
3、第一视频进入后台播放时,第一视频会暂停播放。在该实施例中,可以在第一视频处于后台的情况下回收与第一视频解码相关的缓存对应的物理内存并拦截与对应缓存访问有关的接口,这样,即使多个视频应用在后台运行,整机内存占用也会减少,电子设备对用户的响应速度增快,提高用户的体验感。
4、结合第一方面,在第一方面的一些实现方式中,所述方法还包括:接收用户的第二输入,所述第二输入用于使得第一应用返回前台状态;为所述第一缓存集合中的缓存重新分配物理内存;解除对所述与第一缓存集合中的缓存的访问相关的接口的拦截。
5、在该实施例中,在第一应用返回前台后,第一视频会自动开始播放或者需要用户操作后继续进行播放,这时需要为回收物理内存的缓存重新分配物理内存,并在重新分配物理内存后解除对相关接口的拦截,从而不影响第一视频的继续播放。
6、可选的,第一视频进入后台后,该第一应用可以由于安卓内存清理机制或者被用户手动清理,则第一应用再次回到前台需要通过冷启动的方式。此时,回收物理内存的缓存不需要重新分配物理内存。
7、结合第一方面,在第一方面的一些实现方式中,所述第一缓存集合包括第二缓存、第三缓存、第四缓存、第五缓存中的至少一项,其中所述第二缓存是媒体模块持有的处于输入缓存队列的空输入缓存,所述第三缓存是所述媒体模块持有的正在填充解码结果的输出缓存,所述第四缓存是所述媒体模块持有的处于输出缓存队列的待所述第一应用使用的填充解码结果的输出缓存,所述第五缓存是所述第一应用持有的填充解码结果的输出缓存,所述媒体模块用于对所述第一视频进行解码。
8、在该实施例中,可以根据与第一视频解码相关的缓存的状态,回收处于特定状态的缓存,对于处于不同状态的缓存可以按照不同的回收策略进行物理内存回收。
9、在一些实施例中,可以根据电子设备的内存状态分级进行缓存对应的物理内存回收。例如,电子设备分为第一内存紧张状态和第二内存紧张状态,第一内存紧张状态的内存紧张程度低于第二内存紧张状态。当电子设备处于第一内存紧张状态时,仅回收上述第二缓存至第五缓存中由媒体模块持有的缓存对应的物理内存;当电子设备处于第二内存紧张状态时,增加回收第一应用持有的第五缓存。也可以使用其他策略,例如将电子设备按照内存紧张状态划分为更多级,并对不同级回收不同的内存或者对不同级虽然回收相同的缓存对应的物理内存,但是可以采用不同的回收方式,示例性的,对于上述第三缓存,如果内存很紧张,可以采用重新解码的方式回收物理内存,如果内存状态不是特别紧张,可以将解码结果存储后回收。
10、结合第一方面,在第一方面的一些实现方式中,所述拦截所述与第一缓存集合中的缓存的访问相关的接口,包括:当所述第一应用的至少一个进程或线程使用与所述第一缓存中集合中的缓存的访问相关的接口时,冻结所述第一应用的至少一个进程或线程;所述解除对所述与第一缓存集合中的缓存的访问相关的接口的拦截,包括:解冻所述第一应用的至少一个进程或线程。
11、在该实施例中,电子设备可以监测需要拦截的接口,例如通过在对应的接口处设置代码,组织进程或线程使用相应的接口。当第一应用的相应进程或线程访问相应的接口时,直接将该进程或线程冻结,而在重新分配物理内存之后,可以解除对相应进程或线程的冻结。
12、可选的,对于部分应用的拦截,可以在应用访问相应的接口时直接返回错误码(例如,-eagain),这部分应用不会在收到错误码时认为媒体模块出错,仍然会继续使用媒体模块。
13、结合第一方面,在第一方面的一些实现方式中,当所述第一缓存集合包括第三缓存时,所述回收所述第一缓存集合中的缓存对应的物理内存,包括:记录所述第三缓存中填充的解码结果的对应的解码位置,回收所述第三缓存对应的物理内存;以及,所述为所述第一缓存集合中的缓存重新分配物理内存,包括:为所述第三缓存重新分配物理内存,根据解码位置,对所述解码结果对应的数据重新解码后填充至所述重新分配的物理内存中;或者,所述回收所述第一缓存集合中的缓存对应的物理内存,包括:压缩所述第三缓存中填充的解码结果,回收所述第三缓存对应的物理内存;以及,所述为所述第一缓存集合中的缓存重新分配物理内存,包括:为所述第三缓存重新分配物理内存,将所述压缩的解码结果解压缩后填充至所述重新分配的物理内存中;或者,所述回收所述第一缓存集合中的缓存对应的物理内存,包括:将所述第三缓存中填充的解码结果通过页交换换出,回收所述第三缓存对应的物理内存;以及,所述为所述第一缓存集合中的缓存重新分配物理内存,包括:为所述第三缓存重新分配物理内存,将所述换出的解码结果换入至所述重新分配的物理内存中。
14、在该实施例中,第三缓存是媒体模块持有的正在填充解码结果的输出缓存,对于该缓存的回收既可以采用直接丢弃解码结果在重建时重新解码的方式回收,也可以采用存储解码结果并在重建物理内存后将存储的解码结果填充至重建的物理内存中的方式回收,其中解码结果可以通过压缩或不压缩的方式存储在内存的其他位置、内存交换区(或交换空间)或者外部存储介质,例如电子设备的硬盘或磁盘上。
15、结合第一方面,在第一方面的一些实现方式中,当所述第一缓存集合包括第四缓存时,所述回收所述第一缓存集合中的缓存对应的物理内存,包括:压缩所述第四缓存中填充的解码结果,回收所述第四缓存对应的物理内存;以及,所述为所述第一缓存集合中的缓存重新分配物理内存,包括:为所述第四缓存重新分配物理内存,将所述压缩的解码结果解压缩后填充至所述重新分配的物理内存中;或者,所述回收所述第一缓存集合中的缓存对应的物理内存,包括:将所述第四缓存中的解码结果通过页交换换出,回收所述第四缓存对应的物理内存;以及,所述为所述第一缓存集合中的缓存重新分配物理内存,包括:为所述第四缓本文档来自技高网...
【技术保护点】
1.一种内存管理方法,用于电子设备,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
3.如权利要求2所述的方法,其特征在于,所述第一缓存集合包括第二缓存、第三缓存、第四缓存、第五缓存中的至少一项,其中所述第二缓存是媒体模块持有的处于输入缓存队列的空输入缓存,所述第三缓存是所述媒体模块持有的正在填充解码结果的输出缓存,所述第四缓存是所述媒体模块持有的处于输出缓存队列的待所述第一应用使用的填充解码结果的输出缓存,所述第五缓存是所述第一应用持有的填充解码结果的输出缓存,所述媒体模块用于对所述第一视频进行解码。
4.根据权利要求2或3所述的方法,其特征在于:
5.如权利要求3所述的方法,其特征在于,当所述第一缓存集合包括第三缓存时,
6.如权利要求3或5所述的方法,其特征在于,当所述第一缓存集合包括第四缓存时,
7.如权利要求1至6中任一项所述的方法,其特征在于,所述与第一缓存集合中的缓存的访问相关的接口包括第一接口和第二接口,所述第一接口用于所述第一应用获取所述第二缓存,所述第二接口用
8.如权利要求7所述的方法,其特征在于,
9.一种内存管理装置,其特征在于,包括:
10.如权利要求9所述的装置,其特征在于,
11.如权利要求10所述的装置,其特征在于,所述第一缓存集合包括第二缓存、第三缓存、第四缓存、第五缓存中的至少一项,其中所述第二缓存是媒体模块持有的处于输入缓存队列的空输入缓存,所述第三缓存是所述媒体模块持有的正在填充解码结果的输出缓存,所述第四缓存是所述媒体模块持有的处于输出缓存队列的待所述第一应用使用的填充解码结果的输出缓存,所述第五缓存是所述第一应用持有的填充解码结果的输出缓存,所述媒体模块用于对所述第一视频进行解码。
12.根据权利要求10或11所述的装置,其特征在于:
13.如权利要求11所述的装置,其特征在于,当所述第一缓存集合包括第三缓存时,所述媒体模块,具体用于:
14.如权利要求11或13所述的装置,其特征在于,当所述第一缓存集合包括第四缓存时,所述媒体模块,具体用于:
15.如权利要求9至14中任一项所述的装置,其特征在于,所述与第一缓存集合中的缓存的访问相关的接口包括第一接口和第二接口,所述第一接口用于所述第一应用获取所述第二缓存,所述第二接口用于所述第一应用获取所述第四缓存。
16.如权利要求15所述的装置,其特征在于,
17.如权利要求11所述的装置,其特征在于,所述装置还包括活动管理服务,用于:
18.一种电子设备,其特征在于,包括:一个或多个处理器;一个或多个存储器;所述一个或多个存储器存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被一个或多个处理器执行时,使得如权利要求1至8中任一项所述的内存管理方法被执行。
19.一种芯片,其特征在于,包括:处理器和通信接口,所述通信接口用于接收信号,并将所述信号传输至所述处理器,所述处理器处理所述信号,使得如权利要求1至8中任一项所述的内存管理方法被执行。
20.一种可读存储介质,其特征在于,所述可读存储介质中存储有指令,当所述指令在计算机上运行时,使得如权利要求1至8中任一项所述的内存管理方法被执行。
...【技术特征摘要】
1.一种内存管理方法,用于电子设备,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
3.如权利要求2所述的方法,其特征在于,所述第一缓存集合包括第二缓存、第三缓存、第四缓存、第五缓存中的至少一项,其中所述第二缓存是媒体模块持有的处于输入缓存队列的空输入缓存,所述第三缓存是所述媒体模块持有的正在填充解码结果的输出缓存,所述第四缓存是所述媒体模块持有的处于输出缓存队列的待所述第一应用使用的填充解码结果的输出缓存,所述第五缓存是所述第一应用持有的填充解码结果的输出缓存,所述媒体模块用于对所述第一视频进行解码。
4.根据权利要求2或3所述的方法,其特征在于:
5.如权利要求3所述的方法,其特征在于,当所述第一缓存集合包括第三缓存时,
6.如权利要求3或5所述的方法,其特征在于,当所述第一缓存集合包括第四缓存时,
7.如权利要求1至6中任一项所述的方法,其特征在于,所述与第一缓存集合中的缓存的访问相关的接口包括第一接口和第二接口,所述第一接口用于所述第一应用获取所述第二缓存,所述第二接口用于所述第一应用获取所述第四缓存。
8.如权利要求7所述的方法,其特征在于,
9.一种内存管理装置,其特征在于,包括:
10.如权利要求9所述的装置,其特征在于,
11.如权利要求10所述的装置,其特征在于,所述第一缓存集合包括第二缓存、第三缓存、第四缓存、第五缓存中的至少一项,其中所述第二缓存是媒体模块持有的处于输入缓存队列的空输入缓存,所述第三缓存是所述媒体模块持有的正在填充解码结果的输出缓存,所述第四缓存是所述媒体模块...
【专利技术属性】
技术研发人员:宋远征,王承珂,季柯丞,林海铭,李旭辉,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。