[发明专利]一种多线程运行性能的处理方法、装置、介质和电子设备有效
申请号: | 202010085327.9 | 申请日: | 2020-02-10 |
公开(公告)号: | CN111338831B | 公开(公告)日: | 2023-06-09 |
发明(设计)人: | 朴英敏 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07;G06F9/48 |
代理公司: | 北京国昊天诚知识产权代理有限公司 11315 | 代理人: | 马瑞 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 多线程 运行 性能 处理 方法 装置 介质 电子设备 | ||
本公开提供了一种多线程运行性能的处理方法、装置、介质和电子设备,所述处理方法包括:响应于启动主线程的启动指令,启动主线程;在检测到启动主线程之后,调用修复代码对异常线程进行修复,得到对应的修复后的线程;获取并载入线程栈对应的栈保护页;创建主线程的至少一个子线程,得到对应的子线程。本公开提供的处理方法,在检测到启动主线程之后,调用修复代码对异常线程进行修复,得到对应的修复后的线程;在得到修复后的线程之后,载入线程栈对应的栈保护页;并在载入线程栈对应的栈保护页之后,创建主线程的至少一个子线程;这样,得到的子线程能够避免出现缺页异常的现象,而且还可以优化多线程下的程序性能及应用程序的启动速度。
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种多线程运行性能的处理方法、装置、介质和电子设备。
背景技术
安卓5和安卓6版本上,虚拟机在启动线程过程中,创建线程栈时,会产生大量的缺页异常,会影响程序的运行速度,导致启动慢,或者一系列的卡顿现象。在安卓7上已经对上述问题进行了修复,性能有很大提升。但市面上还是有大量的安卓5和6版本手机,这类手机无法通过升级系统来进行上述问题修复。只能在应用程序测通过一些非常规手段修复这类系统问题。
现有常见存在的缺页异常问题如下所述:程序在跟系统申请内存时,不会立即返回一个实际的物理内存页,而只是返回一个跟申请大小对应的一块地址空间,叫做虚拟内存空间。当程序访问读/写这段申请下来的虚拟内存时,如果当前地址没有对应的物理页,就会产生一个缺页异常。这个异常对应的处理函数中,给当前虚拟地址分配一个物理内存页。因为缺页异常处理过程中会持有一把进程锁,所以,频繁的缺页异常会导致程序的一系列性能问题。
现有的安卓平台存在的问题如下所述:
安卓5、安卓6上ART虚拟机在创建线程栈后,会遍历一遍栈地址空间。遍历栈的目的是为了触发主线程栈的自增。这样,对于主线程是必要的,但是,对于子线程是没有必要的。一个子线程的栈大小是1MB,一个页的大小是4KB,所以,遍历栈会触发256次的缺页异常。上述缺页异常对于性能是非常严重的破坏,因此,有些产品在安卓7上已经对上述部分逻辑进行了修复。
发明内容
本公开的目的在于提供一种多线程运行性能的处理方法、装置、介质和电子设备,能够解决上述提到的至少一个技术问题。具体方案如下:
根据本公开的具体实施方式,第一方面,本公开提供一种多线程运行性能的处理方法,包括:
响应于启动主线程的启动指令,启动所述主线程;
在检测到启动所述主线程之后,调用修复代码对异常线程进行修复,得到对应的修复后的线程;
获取并载入线程栈对应的栈保护页;
创建所述主线程的至少一个子线程,得到对应的子线程。
根据本公开的具体实施方式,第二方面,本公开提供一种多线程运行性能的处理装置,包括:
启动单元,用于响应于启动主线程的启动指令,启动所述主线程;
修复单元,用于在检测到所述启动单元启动所述主线程之后,调用修复代码对异常线程进行修复,得到修复后的线程;
获取载入单元,用于获取并载入线程栈对应的栈保护页;
创建单元,用于创建所述主线程的至少一个子线程,得到对应的子线程。
根据本公开的具体实施方式,第三方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上任一项所述的多线程运行性能的处理方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010085327.9/2.html,转载请声明来源钻瓜专利网。