System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 在Android设备上基于V8引擎的垃圾回收方法技术_技高网

在Android设备上基于V8引擎的垃圾回收方法技术

技术编号:40946005 阅读:2 留言:0更新日期:2024-04-18 15:04
本发明专利技术实施例公开了一种在Android设备上基于V8引擎的垃圾回收方法,包括:依次在Android设备屏幕同步的每一帧内,执行如下操作:S10、记录当前帧内的代码执行时长;S20、如果所述代码执行时长未超过设定阈值,在当前帧的剩余时间内执行垃圾回收,并根据垃圾回收时长更新最新若干帧的总体执行情况;如果所述代码执行时长超过设定阈值,根据所述代码执行时长更新最新若干帧的总体执行情况;其中,所述设定阈值小于帧周期;S30、根据所述总体执行情况,决定下一帧的垃圾回收策略。本实施例能够有效克服屏幕同步中的卡顿。

【技术实现步骤摘要】

本专利技术实施例涉及电子设备领域,尤其涉及一种在android设备上基于v8引擎的垃圾回收方法。


技术介绍

1、v8引擎是由google公司提供的一种开源的javascript执行引擎,主要用于执行javascript代码。在很多依赖于javascript语言的移动端技术框架中,android设备上大多选择v8作为javascript执行引擎,以小程序技术框架为例,市面上的小程序技术方案背后基本都有依赖javascript语言去做业务开发。v8引擎的代码执行策略如图1所示,其中vsync为android系统提供的周期性垂直同步信号,将cpu(central processing unit,中央处理器)的代码执行和数据渲染过程划分为多个帧,cpu在每一帧内将代码执行完毕后,对执行结果进行数据渲染同步于android设备屏幕,保证小程序等的运行流畅。

2、v8引擎的默认垃圾回收策略相对黑盒,以新生代gc(garbage collection,垃圾回收)为例,当新生代的对象占用空间达到v8新生代最大空间的一定比例时,才会触发一次新生代gc,这个过程可能由于新生代对象的总量较多而引起gc时cpu耗时过多,超出当前帧的原本时长,从而丢帧,用户看起来就比较卡顿。以60赫兹的同步频率为例(低端机一般都是60赫兹),正常情况下,如果每一帧cpu上代码执行耗时都在16.6毫秒以内,那么就能保证每一帧都是流畅的,如果某一帧cpu上代码执行超过16.6毫秒,那么就由于这一帧数据无法同步到设备屏幕上,从而引起卡顿。


<b>技术实现思路

1、本专利技术实施例提供一种在android设备上基于v8引擎的垃圾回收方法,以解决上述技术问题。

2、第一方面,本专利技术实施例提供了一种在android设备上基于v8引擎的垃圾回收方法,包括:

3、依次在android设备屏幕同步的每一帧内,执行如下操作:

4、s10、记录当前帧内的代码执行时长;

5、s20、如果所述代码执行时长未超过设定阈值,在当前帧的剩余时间内执行垃圾回收,并根据垃圾回收时长更新最新若干帧的总体执行情况;如果所述代码执行时长超过设定阈值,根据所述代码执行时长更新最新若干帧的总体执行情况;其中,所述设定阈值小于帧周期;

6、s30、根据所述总体执行情况,决定下一帧的垃圾回收策略。

7、第二方面,本专利技术实施例提供了一种电子设备,所述电子设备包括:

8、一个或多个处理器;

9、存储器,用于存储一个或多个程序,

10、当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现任一实施例所述的在android设备上基于v8引擎的垃圾回收方法。

11、第三方面,本专利技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的在android设备上基于v8引擎的垃圾回收方法。

12、本专利技术实施例提供了一种在android设备上基于v8引擎的垃圾回收方法,在某一帧的代码执行耗时不超过设定阈值的情况下,利用空闲时长去执行一次新生代gc,同时记录每一帧是否产生了卡顿,在产生卡顿的情况系进一步分析该卡顿能否在多个帧中得到弥补。当无法弥补的情况到达一定量时,就停用此策略,回退到v8默认的垃圾回收策略上。该方法可以有效利用每帧空闲时间,分批次执行gc,减轻gc压力,将原本的gc耗时分散到了多个空闲时间片段上,提升整体的流畅性;同时能够根据整体流畅性检验gc策略的性能,及时在新老策略之间切换,实现对整体流畅性的灵活控制。

本文档来自技高网...

【技术保护点】

1.一种在Android设备上基于V8引擎的垃圾回收方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述根据垃圾回收时长更新最新若干帧的总体执行情况,包括:

3.根据权利要求1所述的方法,其特征在于,所述根据所述代码执行时长更新最新若干帧的总体执行情况,包括:

4.根据权利要求1所述的方法,其特征在于,所述最新若干帧的总体执行情况包括:最新若干帧的总奖励和平均总耗时;

5.根据权利要求4所述的方法,其特征在于,所述根据所述最新若干帧的平均总耗时决定下一帧的垃圾回收策略,包括:

6.根据权利要求5所述的方法,其特征在于,所述根据负反馈的累计次数决定下一帧的垃圾回收策略,包括:

7.根据权利要求1所述的方法,其特征在于,在依次在Android设备屏幕同步的每一帧内,执行S10-S30的操作之前,还包括:构建设定容量的先进先出队列,用于存储最新若干帧的执行情况;

8.根据权利要求1所述的方法,其特征在于,在如果所述代码执行时长未超过设定阈值,在当前帧的剩余时间内执行垃圾回收之前,还包括:

9.一种电子设备,其特征在于,包括:

10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,该程序被处理器执行时实现权利要求1-8任一所述的在Android设备上基于V8引擎的垃圾回收方法。

...

【技术特征摘要】

1.一种在android设备上基于v8引擎的垃圾回收方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述根据垃圾回收时长更新最新若干帧的总体执行情况,包括:

3.根据权利要求1所述的方法,其特征在于,所述根据所述代码执行时长更新最新若干帧的总体执行情况,包括:

4.根据权利要求1所述的方法,其特征在于,所述最新若干帧的总体执行情况包括:最新若干帧的总奖励和平均总耗时;

5.根据权利要求4所述的方法,其特征在于,所述根据所述最新若干帧的平均总耗时决定下一帧的垃圾回收策略,包括:

6.根据权利要求5所述的方法,其特征在于,所述根据...

【专利技术属性】
技术研发人员:刘剑
申请(专利权)人:北京小川在线网络技术有限公司
类型:发明
国别省市:

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

1