[發明專利]一種多線程運行性能的處理方法、裝置、介質和電子設備有效
| 申請號: | 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.szxzyx.cn/pat/books/202010085327.9/2.html,轉載請聲明來源鉆瓜專利網。





