[發明專利]檢測卡頓的方法和裝置在審
| 申請號: | 202010598543.3 | 申請日: | 2020-06-28 |
| 公開(公告)號: | CN111752719A | 公開(公告)日: | 2020-10-09 |
| 發明(設計)人: | 黃偉平 | 申請(專利權)人: | 騰訊音樂娛樂科技(深圳)有限公司 |
| 主分類號: | G06F9/52 | 分類號: | G06F9/52;G06F9/48 |
| 代理公司: | 北京三高永信知識產權代理有限責任公司 11138 | 代理人: | 張所明 |
| 地址: | 518000 廣東省深圳市*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 檢測 方法 裝置 | ||
本申請公開了一種檢測卡頓的方法和裝置,屬于計算機技術領域。所述方法包括:在主線程訪問到加鎖的數據容器時,記錄訪問時刻,其中,所述數據容器被第一子線程加鎖。在所述第一子線程釋放所述數據容器的鎖時,記錄釋放鎖時刻。通過所述第一子線程基于所述訪問時刻和所述釋放鎖時刻,確定所述主線程的等待時長。如果所述等待時長大于卡頓時長閾值,則確定存在卡頓,并獲取卡頓信息,所述卡頓信息包括所述第一子線程的調用棧、所述主線程的調用棧和所述等待時長。采用本申請,可以發現因加鎖而產生的卡頓,并獲取與卡頓相關的信息,供開發人員分析,以便及時的解決卡頓問題。
技術領域
本申請涉及計算機技術領域,具體涉及一種檢測卡頓的方法和裝置。
背景技術
線程是指操作系統中能夠進行運算調度的最小單位,操作系統可以同時執行多個線程。一個應用進行的生命周期內,會有多個線程同時執行。其中,線程可以分為主線程和子線程。主線程是指應用中處理用戶交互事件的線程,如果主線程發生等待和執行時間過長等事件,會直接使應用發生卡頓,影響用戶體驗。子線程是指除主線程以外的線程。
應用在運行期間,為了保證多線程場景下數據讀寫的安全性和一致性,會對數據容器進行加鎖。當某一個線程對數據容器加鎖后,在該線程釋放鎖之前,其他線程訪問此數據容器時,都會暫停執行,等待鎖釋放。如果等待鎖釋放的線程是主線程,那么就會造成應用卡頓,影響用戶體驗。
因此,如何及時的檢測出因主線程加鎖而導致的卡頓,并獲取與卡頓相關的信息供開發人員分析,以便及時的解決卡頓問題,是一個值得研究的問題。
發明內容
本申請實施例提供了一種檢測卡頓的方法和裝置,可以解決相關技術中存在的技術問題。所述檢測卡頓的的方法和裝置的技術方案如下:
第一方面,提供了一種檢測卡頓的方法,所述方法包括:
在主線程訪問到加鎖的數據容器時,記錄訪問時刻,其中,所述數據容器被第一子線程加鎖;
在所述第一子線程釋放所述數據容器的鎖時,記錄釋放鎖時刻;
通過所述第一子線程基于所述訪問時刻和所述釋放鎖時刻,確定所述主線程的等待時長;
如果所述等待時長大于卡頓時長閾值,則確定存在卡頓,并獲取卡頓信息,所述卡頓信息包括所述第一子線程的調用棧、所述主線程的調用棧和所述等待時長。
在一種可能的實現方式中,所述獲取卡頓信息,包括:
通過所述第一子線程獲取所述第一子線程的調用棧;
返回所述主線程,通過所述主線程獲取所述主線程的調用棧。
在一種可能的實現方式中,所述獲取卡頓信息,包括:
開啟第二子線程;
通過所述第二子線程獲取所述第一子線程的調用棧和所述主線程的調用棧。
在一種可能的實現方式中,所述卡頓信息還包括數據容器信息,所述獲取卡頓信息,還包括:
基于所述第一子線程的調用棧和所述主線程的調用棧,確定數據容器信息,其中,所述數據容器信息包括所述數據容器的標識和所述第一子線程讀寫所述數據容器的邏輯信息。
在一種可能的實現方式中,所述卡頓信息還包括所述訪問時刻和/或應用程序相關信息,所述應用程序相關信息至少包括發生卡頓的應用程序的名稱信息和版本信息。
在一種可能的實現方式中,所述應用程序相關信息還包括所述發生卡頓的應用程序所登錄的用戶賬號。
在一種可能的實現方式中,所述獲取卡頓信息之后,所述方法還包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊音樂娛樂科技(深圳)有限公司,未經騰訊音樂娛樂科技(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010598543.3/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種格柵式泌水充填擋墻
- 下一篇:一種圖片清晰度判定方法及裝置





