一种多线程运行性能的处理方法、装置、介质和电子设备制造方法及图纸

技术编号:24682578 阅读:23 留言:0更新日期:2020-06-27 07:46
本公开提供了一种多线程运行性能的处理方法、装置、介质和电子设备,所述处理方法包括:响应于启动主线程的启动指令,启动主线程;在检测到启动主线程之后,调用修复代码对异常线程进行修复,得到对应的修复后的线程;获取并载入线程栈对应的栈保护页;创建主线程的至少一个子线程,得到对应的子线程。本公开提供的处理方法,在检测到启动主线程之后,调用修复代码对异常线程进行修复,得到对应的修复后的线程;在得到修复后的线程之后,载入线程栈对应的栈保护页;并在载入线程栈对应的栈保护页之后,创建主线程的至少一个子线程;这样,得到的子线程能够避免出现缺页异常的现象,而且还可以优化多线程下的程序性能及应用程序的启动速度。

A processing method, device, medium and electronic device for multithreading performance

【技术实现步骤摘要】
一种多线程运行性能的处理方法、装置、介质和电子设备
本公开涉及计算机
,具体而言,涉及一种多线程运行性能的处理方法、装置、介质和电子设备。
技术介绍
安卓5和安卓6版本上,虚拟机在启动线程过程中,创建线程栈时,会产生大量的缺页异常,会影响程序的运行速度,导致启动慢,或者一系列的卡顿现象。在安卓7上已经对上述问题进行了修复,性能有很大提升。但市面上还是有大量的安卓5和6版本手机,这类手机无法通过升级系统来进行上述问题修复。只能在应用程序测通过一些非常规手段修复这类系统问题。现有常见存在的缺页异常问题如下所述:程序在跟系统申请内存时,不会立即返回一个实际的物理内存页,而只是返回一个跟申请大小对应的一块地址空间,叫做虚拟内存空间。当程序访问读/写这段申请下来的虚拟内存时,如果当前地址没有对应的物理页,就会产生一个缺页异常。这个异常对应的处理函数中,给当前虚拟地址分配一个物理内存页。因为缺页异常处理过程中会持有一把进程锁,所以,频繁的缺页异常会导致程序的一系列性能问题。现有的安卓平台存在的问题如下所述:安卓5、安卓6上ART虚拟机在创建线程栈后,会遍历一遍栈地址空间。遍历栈的目的是为了触发主线程栈的自增。这样,对于主线程是必要的,但是,对于子线程是没有必要的。一个子线程的栈大小是1MB,一个页的大小是4KB,所以,遍历栈会触发256次的缺页异常。上述缺页异常对于性能是非常严重的破坏,因此,有些产品在安卓7上已经对上述部分逻辑进行了修复。
技术实现思路
本公开的目的在于提供一种多线程运行性能的处理方法、装置、介质和电子设备,能够解决上述提到的至少一个技术问题。具体方案如下:根据本公开的具体实施方式,第一方面,本公开提供一种多线程运行性能的处理方法,包括:响应于启动主线程的启动指令,启动所述主线程;在检测到启动所述主线程之后,调用修复代码对异常线程进行修复,得到对应的修复后的线程;获取并载入线程栈对应的栈保护页;创建所述主线程的至少一个子线程,得到对应的子线程。根据本公开的具体实施方式,第二方面,本公开提供一种多线程运行性能的处理装置,包括:启动单元,用于响应于启动主线程的启动指令,启动所述主线程;修复单元,用于在检测到所述启动单元启动所述主线程之后,调用修复代码对异常线程进行修复,得到修复后的线程;获取载入单元,用于获取并载入线程栈对应的栈保护页;创建单元,用于创建所述主线程的至少一个子线程,得到对应的子线程。根据本公开的具体实施方式,第三方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上任一项所述的多线程运行性能的处理方法。根据本公开的具体实施方式,第四方面,本公开提供一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上任一项所述的多线程运行性能的处理方法。本公开实施例的上述方案与现有技术相比,至少具有以下有益效果:本公开实施例通过提供一种多线程运行性能的处理方法、装置、介质和电子设备,在检测到启动主线程之后,调用修复代码对异常线程进行修复,得到对应的修复后的线程;在得到修复后的线程之后,载入线程栈对应的栈保护页;并在载入线程栈对应的栈保护页之后,创建主线程的至少一个子线程,得到对应的子线程;这样,得到的子线程可以避免出现缺页异常的现象,而且还可以优化多线程下的程序性能,以及优化应用程序的启动速度。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1示出了根据本公开实施例的多线程运行性能的处理方法的方法流程图;图2示出了根据本公开的实施例的多线程运行性能的处理装置的装置结构示意图;图3示出了根据本公开的实施例的电子设备连接结构示意图。具体实施方式为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。在本公开实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。应当理解,尽管在本公开实施例中可能采用术语第一、第二、第三等来描述……,但这些……不应限于这些术语。这些术语仅用来将……区分开。例如,在不脱离本公开实施例范围的情况下,第一……也可以被称为第二……,类似地,第二……也可以被称为第一……。取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者装置中还存在另外的相同要素。下面结合附图详细说明本公开的可选实施例。实施例1如图1所示,根据本公开实施例的具体实施方式,第一方面,本公开实施例提供一种多线程运行性能的处理方法,具体包括如下方法步骤:S102:响应于启动主线程的启动指令,启动主线程。S104:在检测到启动主线程之后,调用修复代码对异常线程进行修复,得到对应的修复后的线程。可选的,执行S104调用修复代码对异常线程进行修复,得到对应的修复后的线程包括以下步骤:遍历虚拟机的动态库,搜索到用于调用第一函数的指令的第一地址,第一函数为用于进行遍历栈操作的函数;遍历动态库,搜索到第一函数方法对应的第二地址;遍历动态库,搜索到第二函数方法对应的第三地址,第二函数为用于创建栈保护页的函数;将第二地址对应的第一跳转指本文档来自技高网...

【技术保护点】
1.一种多线程运行性能的处理方法,其特征在于,包括:/n响应于启动主线程的启动指令,启动所述主线程;/n在检测到启动所述主线程之后,调用修复代码对异常线程进行修复,得到对应的修复后的线程;/n获取并载入线程栈对应的栈保护页;/n创建所述主线程的至少一个子线程,得到对应的子线程。/n

【技术特征摘要】
1.一种多线程运行性能的处理方法,其特征在于,包括:
响应于启动主线程的启动指令,启动所述主线程;
在检测到启动所述主线程之后,调用修复代码对异常线程进行修复,得到对应的修复后的线程;
获取并载入线程栈对应的栈保护页;
创建所述主线程的至少一个子线程,得到对应的子线程。


2.根据权利要求1所述的方法,其特征在于,所述调用修复代码对异常线程进行修复,得到对应的修复后的线程包括:
遍历虚拟机的动态库,搜索到用于调用第一函数的指令的第一地址,所述第一函数为用于进行遍历栈操作的函数;
遍历所述动态库,搜索到所述第一函数方法对应的第二地址;
遍历所述动态库,搜索到第二函数方法对应的第三地址,所述第二函数为用于创建所述栈保护页的函数;
将所述第二地址对应的第一跳转指令替换为所述第三地址对应的第二跳转指令。


3.根据权利要求2所述的方法,其特征在于,在所述将所述第二地址对应的第一跳转指令替换为所述第三地址对应的第二跳转指令之前,所述方法还包括:
读取所述第一跳转指令;以及
读取所述第二跳转指令;
其中,所述第一跳转指令为所述第二地址对应的跳转指令,
所述第二跳转指令为所述第三地址对应的跳转指令。


4.根据权利要求1所述的方法,其特征在于,在所述获取并载入线程栈对应的栈保护页之前,所述方法还包括:
编辑所述线程栈对应的所述栈保护页。


5.根据权利要求4所述的方法,其特征在于,在所述编辑所述线程栈对应...

【专利技术属性】
技术研发人员:朴英敏
申请(专利权)人:北京字节跳动网络技术有限公司
类型:发明
国别省市:北京;11

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

1