WO2018161622A1 - 一种获取应用卡顿信息的方法及设备 - Google Patents

一种获取应用卡顿信息的方法及设备 Download PDF

Info

Publication number
WO2018161622A1
WO2018161622A1 PCT/CN2017/109161 CN2017109161W WO2018161622A1 WO 2018161622 A1 WO2018161622 A1 WO 2018161622A1 CN 2017109161 W CN2017109161 W CN 2017109161W WO 2018161622 A1 WO2018161622 A1 WO 2018161622A1
Authority
WO
WIPO (PCT)
Prior art keywords
time
application
information
execution
call
Prior art date
Application number
PCT/CN2017/109161
Other languages
English (en)
French (fr)
Inventor
龚宁
陈少杰
张文明
Original Assignee
武汉斗鱼网络科技有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 武汉斗鱼网络科技有限公司 filed Critical 武汉斗鱼网络科技有限公司
Publication of WO2018161622A1 publication Critical patent/WO2018161622A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Definitions

  • Embodiments of the present invention relate to the field of computer technologies, and in particular, to a method and device for acquiring application card information.
  • a key metric for the user experience of an application is application fluency. When used, the application will not be smooth, and the user experience will be very poor; then in the application development and testing should try to find this kind of stuck problem and deal with and solve it in time.
  • the purpose of the present application is to provide a method and a device for acquiring application information, which can directly locate which method is caused by time-consuming problem, and only need to modify and optimize the time-consuming method, thereby eliminating a large amount of Time and effort to locate problems and find the cause of the Caton.
  • an embodiment of the present application provides a method for obtaining application card information, including:
  • the method includes:
  • A1 The second listening thread listens to the calling information of all methods in the development package, and stores the calling information into the method call statistics queue.
  • the A1 further includes:
  • A1.2 When the difference between the second end time and the second start time is greater than a predetermined statistical time value, the call information of the method is stored in the method call statistics queue.
  • the calling information includes: a class name, a function name, and a code line of the method.
  • the key value of the method call statistics queue is a time-consuming time of the method, where the time-consuming time refers to a difference between the second end time and the second start time of the method.
  • the S1 further includes:
  • the S2 further includes:
  • the first listening thread acquires an execution duration of the specific method.
  • the S3 further includes:
  • the method further includes:
  • the second intercept execution point is set to perform statistics before and after execution of all methods in the development package.
  • an embodiment of the present application further provides an apparatus for acquiring application card information, and a package include:
  • the processor, the memory, and the communication interface complete communication with each other through the bus;
  • the memory stores program instructions executable by the processor, the processor invoking the program instructions to perform the following methods:
  • a specific method of listening to an application by the first listening thread when the first listening thread detects an application jam, acquiring a first start time and a first end time of the occurrence of the stuck; based on the first start time and At the first end time, the call information of the specific method is obtained in the method call statistics queue to obtain the cardon information.
  • an embodiment of the present application further provides a computer program, including program code, where the program code is configured to perform the following operations:
  • the processor is configured to invoke logic instructions in the memory to perform the following methods:
  • a specific method of listening to an application by the first listening thread when the first listening thread detects an application jam, acquiring a first start time and a first end time of the occurrence of the stuck; based on the first start time and At the first end time, the call information of the specific method is obtained in the method call statistics queue to obtain the cardon information.
  • an embodiment of the present application further provides a storage medium for storing a computer program as described above.
  • the method for obtaining the application of the cardon information provided by the embodiment of the present application finds a method for executing the card time application from the method call statistics queue, and finally obtains the card state.
  • the method of the present invention can directly locate which method is time-consuming to cause the problem to occur, only needs to modify and optimize the time-consuming method, saves a lot of positioning problems and finds the time and energy of the cause of the card, and greatly improves Optimized efficiency, which improves the fluency of the application and improves the experience of the application.
  • FIG. 1 is a schematic flow chart of a method for obtaining application cardon information according to an embodiment of the present invention
  • FIG. 2 is a structural block diagram of an apparatus for acquiring application of cardon information in an embodiment of the present invention.
  • a method for obtaining application card information includes:
  • the method of executing the application in the stuck time period is found from the method call statistics queue, and finally the call information of the specific method that is time-consuming in the stuck time period is obtained.
  • the stuck time period refers to a time period from the start time to the end time.
  • the method in this embodiment can directly locate the method that causes the problem to be caused by the time-consuming process, and only needs to modify and optimize the time-consuming method, and saves a lot of positioning problems and time and effort for finding the cause of the card. Improves optimization efficiency, which improves application fluency and improves application experience.
  • the specific method described in this embodiment is any method that needs to be monitored in the application, and may be an application main program method or a user interface method of the application program, and the program method needs to be monitored, and the program is passed.
  • the first listening thread performs the monitoring, which is not limited in this embodiment.
  • the specific method of monitoring in this embodiment may be one method or multiple methods.
  • the finalized information in step S3 refers to a specific method in which all the specific methods of the monitoring occur and related information.
  • the method for obtaining the application of the cardon information further includes:
  • A1 The second listening thread listens to the calling information of all methods in the development package, and stores the calling information into the method call statistics queue.
  • the second listening thread and the first listening thread are independently executed, and have no synchronization relationship, and there is no interaction.
  • the embodiment is The two listening threads are executing and do not affect each other. After the first listening thread listens to the application jam, it needs to use the method recorded by the second listening thread to call the data of the statistical queue.
  • the call information of all the methods in the development package is obtained in advance by the second listening thread, and the call information of all the methods is recorded and stored in the method call statistics queue, so that each method can be pre-recorded when the jam occurs.
  • the call information is used to determine the program method in which the stuck occurs.
  • the development package refers to development code that implements a certain function of an application. In an application, depending on the function, you can have one or more development kits. In this embodiment, all the methods in the development package may be all methods of a development package, or all methods in multiple development packages, or all methods in the development package, in the S1. The particular method is one of all the methods of the development kit. This embodiment does not limit this. When listening to all the methods of multiple development packages, the program consumes more resources than all the methods in a development package. The specific method can be selected according to specific needs.
  • the A1 further includes:
  • A1.2 When the difference between the second end time and the second start time is greater than a predetermined statistical time value, the call information of the method is stored in the method call statistics queue.
  • the call information includes: a class name, a function name, and a code line of the method.
  • the key value of the method call statistics queue is a time-consuming time of the method, where the time-consuming time refers to a difference between the second end time and the second start time of the method.
  • the second listening thread is executed along with the execution process of the application, and continuously records the start time and the end time of each execution of all the methods when the application is executed. Since most of the methods in the application are normal and time-consuming, in order to avoid a large number of normal and time-consuming methods that affect the analysis of the problem, this embodiment will compare the difference between the second end time and the second start time.
  • the call information whose value is less than the predetermined statistical time value is all filtered, and is not saved, but only the difference between the second end time and the second start time is greater than the predetermined statistical time value, so that the method call can be greatly reduced. Count the amount of data in the queue, reduce the statistical pressure of the application, and at the same time simplify the call to the statistical queue by the method to find the information, shorten the analysis time.
  • the method call statistics queue in the embodiment records the sequence, time point and time-consuming information of each method execution when the application is executed. Through such a record, it can be ensured that when the carton occurs, an accurate and effective program method is obtained from the data queue according to the start time and the end time of the occurrence of the carton, and the call information that cannot be accurately obtained by the method when the carton occurs is solved. It is not possible to pinpoint the method that caused the problem.
  • the specific predetermined statistical time value may be defined according to the required time required for the normal execution of the program method and the user experience requirement. For example, when a specific method needs to be performed normally for 16 ms, the predetermined statistical time value may be defined as 10 ms. .
  • the method invokes a record value in the statistical queue, including a key value, a class name of the method, a function name, and a code line, wherein the key value is used to retrieve the statistical queue of the method call, thereby improving retrieval efficiency.
  • the S1 further includes:
  • the code for monitoring that is, the first monitoring execution point is added. Then, when the specific method is executed, the first intercept execution point is executed to perform monitoring.
  • the S2 further includes:
  • the first listening thread acquires an execution duration of the specific method.
  • the first listening thread determines whether the specific method is stuck by the execution duration of the specific method; when the execution duration is greater than the predetermined jam time value, the application jam is detected. At this time, the start time of the current execution of the specific method is the first start time, and the current time is the first end time.
  • the first listening thread may also acquire the location.
  • the class name, the function name, the currently executed code line, and the like of the specific method are used for later use in the Carton analysis, and are specifically determined according to the subsequent analysis needs, which is not limited in this embodiment.
  • the predetermined cardon time value may be defined according to the required consumption time and the user experience requirement of the specific method, for example, when a specific method needs to be performed normally for 16 ms, the predetermined card time value may be determined. It is 300ms.
  • the S3 further includes:
  • the time period is obtained by the start time and the receiving time of the occurrence of the jam. a collection of call information, and acquiring a set of call information of the specific method, and then acquiring call information that takes longer than the predetermined card time value from the set of call information of the specific method, that is, specifically positioned It is the occurrence of a click on the particular method, which achieves a precise positioning of the application jamon problem.
  • the method further includes:
  • the listener execution point is set to perform statistics before and after execution of all methods in the development package.
  • the development package refers to a development package that needs to locate the stuck problem, and may be used for all development packages in the application, or may be a development package for a specific application, where the second monitoring thread passes
  • the constructor of the application's method cuts into the listener point to implement the listener of the method; when the program method is called, it must be listened to.
  • the method of monitoring is to perform statistics before and after execution of the method of the application, record the start time before execution, and the second start time, and record the end time after execution, that is, the second end time.
  • the method of the present invention is described below by using a specific embodiment.
  • the application environment of the specific embodiment is an Android TV application, an Android box application or an Android mobile phone application, and the method of the present invention is illustrated by a main interface of an Android application;
  • the method of the present invention is also applicable to the Windows operating system, the Linux operating system, or the OS X operating system, which is not specifically limited in this embodiment.
  • This embodiment is developed on a PC, the operating system is Android4.0, the development tool is Android Studio2.2, the development language is java, and the development package depends on org.aspectj: aspectjtools: 1.8.9, org.aspectj: aspectjweaver: 1.8.9.
  • the AspectJ is a face-oriented framework based on the Java platform, which can weave code into the pointcuts to which the aspect is connected, and implement code injection.
  • the original application code can be modified to facilitate the monitoring of the execution of the original application code. 2. Listen for the cut-in application code execution point.
  • the method is monitored by setting a notification to the pointcut. For example, define the stackMethod() method and annotate @Around("stackPointcut()"), where @Around indicates that the connection point is executed before the execution is completed, and the whole representation is for step 1.
  • the stackMethod() method is called before and after execution of the stackPointcut() connection point defined in the call.
  • the listener method can be called when the original application code is executed, so that the statistical information can be executed on the original application method.
  • the stackMethod() method in step 2 is implemented, the method start time startTime is obtained before the stackMethod() method is executed, and the start time is the current time System.currentTimeMillis() when the code is executed, and then the original method of the connection point is executed, and the original application method is executed. After that, That is, the end time of the acquisition method before the execution of the stackMethod() endTime, endTime is the current time System.currentTimeMillis() when the code is executed.
  • the start time startTime at this time is the second start time
  • the end time endTime is the second end time
  • the method function name methodName the method number of the method in the code
  • the methodLine can be obtained by the pointcut ProceedingJoinPoint
  • the method function name methodName proceedingJoinPoint.getSignature().getName()
  • the method information that takes less than 10 ms (milliseconds) is filtered out, that is, whether the elapsed time of the method execution time is less than 10 ms, and if so, it is filtered out.
  • the method counted in step 3 elapsedTime, the method class name className, the method function name methodName, the method line number methodLine information is saved into the data queue, and the data queue can adopt the system LinkedHashMap linked list hash set, wherein the key
  • the value is the time when the endTime method in step 3 is executed.
  • the value content is the method execution information (elaspedTime, className, methodName,methosLine).
  • the key value is the key value
  • the data queue that is, the method described in A1
  • the 10 ms is the predetermined statistical time value in A1.2.
  • the method execution information corresponding to the time point can be obtained through the time point, and when the card is generated, the data queue can be found according to the start time and the end time of the occurrence of the carton.
  • the method execution time queue in the segment time that is, the call execution of the stuckon method.
  • steps 1, 2, 3, 4 all the methods of the original application are cut into the code, and the method time of the original application runtime, the method class name, the method function name, the method row number, and the statistics of the original application method information are calculated according to the original method.
  • the time when the method execution ends is saved in the data queue, and the order, time point and time-consuming information of each method execution when the original application is executed are recorded.
  • steps 1, 2, 3, 4 are implemented by a listening thread, that is, the second listening thread, and the following steps 5 and 6 are implemented by another listening thread, that is, the first listening thread.
  • the doFrame() callback method of Choreographer.getInstance().postFrameCallback() the application is monitored every time in real time.
  • the drawing period of the system is 16ms, that is, the interface is drawn once every 16ms, and the doFrame() callback is executed every 16 milliseconds. once.
  • the doFrame() callback method described in this embodiment is the specific method described in S1.
  • the interval between two rendering polls that is, the time difference between two executions of doFrame(), can be used to determine whether the application has a jam. It is generally considered that the human eye can feel an obvious stagnation when the drawing period is greater than 300 ms. .
  • the frameTime in step 5 is greater than 300ms, it indicates that a jam has occurred, resulting in the current drawing time exceeding 300ms.
  • the calling information of the method corresponding to the time is found in the original application method calling information data queue recorded in step 4, that is, the lastFrameTime to currentFrameTime period exceeds 300 ms.
  • Original application method Call the information. The way to find is obtained by means of linkedHashMap.get (timestamp).
  • the 300 ms is the predetermined carding time value in S2.2; the last drawing time lastFrameTime is the first starting time in S2, and the current drawing time currentFrameTime is the first in S2. An end time.
  • FIG. 2 is a structural block diagram showing an apparatus for acquiring application cardon information according to Embodiment 2 of the present application.
  • the device for acquiring application of cardon information includes: a processor 301, a memory 302, a communication interface 303, and a bus 304;
  • the processor 301, the memory 302, and the communication interface 303 complete communication with each other through the bus 304;
  • the processor 301 is configured to invoke program instructions in the memory 302 to perform the methods provided by the foregoing method embodiments, for example, including: a specific method of listening to an application by a first listening thread; when the first monitoring When the thread detects the application jam, acquiring the first start time and the first end time of the occurrence of the card; acquiring the call of the specific method in the method call statistics queue based on the first start time and the first end time; Information to get the Caton information.
  • the embodiment discloses a computer program product comprising a computer program stored on a non-transitory computer readable storage medium, the computer program comprising program instructions, when the program instructions are executed by a computer, the computer
  • the method provided by each of the foregoing method embodiments can be performed, for example, including: a specific method of listening to an application by a first listening thread; and acquiring a first start of the occurrence of the card when the first listening thread detects an application jam Time and first end time; based on the first start time and the first end time, acquiring call information of the specific method in a method call statistics queue to obtain the cardon information.
  • the embodiment provides a non-transitory computer readable storage medium, and the non-transitory computer can Reading a storage medium storing computer instructions, the computer instructions causing the computer to perform the method provided by the foregoing method embodiments, for example, comprising: a specific method of listening to an application by a first listening thread; when the first listening thread detects When the card is applied, acquiring the first start time and the first end time of the occurrence of the cardon; and acquiring, according to the first start time and the first end time, the call information of the specific method in the method call statistics queue, Get the Caton information.
  • the foregoing program may be stored in a computer readable storage medium, and the program is executed when executed.
  • the foregoing steps include the steps of the foregoing method embodiments; and the foregoing storage medium includes: a medium that can store program codes, such as a ROM, a RAM, a magnetic disk, or an optical disk.
  • test apparatus and the like of the display device described above are merely illustrative, wherein the units described as separate components may or may not be physically separate, and the components displayed as units may or may not be physical. Units can be located in one place or distributed to multiple network units. Some or all of the modules may be selected according to actual needs to achieve the purpose of the solution of the embodiment. Those of ordinary skill in the art can understand and implement without deliberate labor.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种获取应用卡顿信息的方法及装置。所述方法包括S1,通过第一监听线程监听应用程序的特定方法;S2,当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;S3,基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。所述方法能够直接定位到引起问题发生的是哪个方法执行耗时导致的,只需要针对耗时方法进行修改和优化,省去大量定位问题和查找卡顿原因的时间和精力,大大提高了优化效率,进而提高了应用的流畅度,提升了应用的体验性。

Description

一种获取应用卡顿信息的方法及设备
交叉引用
本申请引用于2017年3月9日提交的专利名称为“一种获取应用卡顿信息的方法及装置”的第2017101386440号中国专利申请,其通过引用被全部并入本申请。
技术领域
本发明的实施例涉及计算机技术领域,更具体地,涉及一种获取应用卡顿信息的方法及设备。
背景技术
应用程序的用户体验的一个关键指标是应用流畅度。当使用时应用时卡顿不流畅,用户的体验会很差;那么在应用程序开发和测试时应尽量找到这种卡顿问题并及时处理和解决。
目前已有的技术方案大多只能检测到应用有卡顿,获取卡顿发生的时间以及卡顿了多长时间,并抓取当前线程的java堆栈信息。但往往很多时候卡顿并不是发生在抓取堆栈信息的时刻,因而在抓取堆栈信息的时刻抓取到的是一些正常的方法调用,并不能提供更多有效信息很好的帮助定位到问题。这种情况下,往往需要根据卡顿的时间点去查看日志,进行测试和调试,需要花费大量的时间和精力,却不一定能找到卡顿的问题所在。
发明内容
本申请的目的在于,提供一种获取应用卡顿信息的方法及设备,能够直接定位到引起问题发生的是哪个方法执行耗时导致的,只需要针对耗时方法进行修改和优化,省去大量定位问题和查找卡顿原因的时间和精力。
第一方面,本申请的实施例提供了一种获取应用卡顿信息的方法,包括:
S1,通过第一监听线程监听应用程序的特定方法;
S2,当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;
S3,基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。
可选地,所述方法包括:
A1,通过第二监听线程监听开发包内所有方法的调用信息,并将所述调用信息存入所述方法调用统计队列中。
可选地,所述A1进一步包括:
A1.1,在所述应用程序执行时,获取所述开发包内所有方法的每一次执行的第二开始时间和第二结束时间;
A1.2,当所述第二结束时间和第二开始时间的差值大于预定统计时间值时,将所述方法的调用信息存入所述方法调用统计队列中。
可选地,所述调用信息包括:方法的类名、函数名和代码行。
可选地,所述方法调用统计队列的关键值为所述方法的耗时时间,所述耗时时间是指所述方法的第二结束时间与第二开始时间的差值。
可选地,所述S1进一步包括:
S1.1,在所述特定方法中切入第一监听执行点;
S1.2,利用所述第一监听执行点监听所述特定方法的执行过程。
可选地,所述S2进一步包括:
S2.1,所述第一监听线程获取所述特定方法的执行持续时间;
S2.2,当所述执行持续时间大于预定卡顿时间值时,获取所述特定方法当前执行的开始时间为第一开始时间,获取当前时间为第一结束时间。
可选地,所述S3进一步包括:
S3.1,在所述方法调用统计队列中,获取所述第一开始时间到第一结束时间的时间段内所述特定方法的全部调用信息;
S3.2,从所述全部调用信息中获取耗时时间大于所述预定卡顿时间值的调用信息。
可选地,所述A1.1之前还包括:
在所述开发包内所有方法的构造函数内切入第二监听执行点;
设置所述第二监听执行点在所述开发包内所有方法执行前和执行后都进行统计。
第二方面,本申请的实施例还提供了一种获取应用卡顿信息的设备,包 括:
处理器、存储器、通信接口和总线;其中,
所述处理器、存储器、通信接口通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如下方法:
通过第一监听线程监听应用程序的特定方法;当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。
第三方面,本申请的实施例还提供了一种计算机程序,包括程序代码,所述程序代码用于执行如下操作:
所述处理器用于调用所述存储器中的逻辑指令,以执行如下方法:
通过第一监听线程监听应用程序的特定方法;当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。
第四方面,本申请的实施例还提供了一种存储介质,用于存储如前所述的计算机程序。
本申请实施例提供的获取应用卡顿信息的方法,根据卡顿发生的开始时间和结束时间,从方法调用统计队列中找出这段卡顿时间应用程执行的方法,最终获得这段卡顿时间耗时的内特定方法的调用信息。本发明所述方法能够直接定位到引起问题发生的是哪个方法执行耗时导致的,只需要针对耗时方法进行修改和优化,省去大量定位问题和查找卡顿原因的时间和精力,大大提高了优化效率,进而提高了应用的流畅度,提升了应用的体验性。
附图说明
图1是本发明一个实施例中一种获取应用卡顿信息的方法流程示意图;
图2是本发明一个实施例中一种获取应用卡顿信息的设备的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,一种获取应用卡顿信息的方法,包括:
S1,通过第一监听线程监听应用程序的特定方法;
S2,当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;
S3,基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。
本实施例根据卡顿发生的开始时间和结束时间,从方法调用统计队列中找出卡顿时间段内应用程序执行的方法,最终获得卡顿时间段内耗时的特定方法的调用信息。所述卡顿时间段是指开始时间到结束时间的时间段。本实施例所述方法能够直接定位到引起问题发生的是哪个方法执行耗时导致的,只需要针对耗时方法进行修改和优化,省去大量定位问题和查找卡顿原因的时间和精力,大大提高了优化效率,进而提高了应用的流畅度,提升了应用的体验性。
本实施例所述特定方法,是应用程序中需要进行监听的任意一个方法,可以是应用程序主程序方法,也可以应用程序的一个用户界面的方法,需要对那个程序方法进行监听,就通过所述第一监听线程进行监听,本实施例对此不作限定。本实施例监听的特定方法可以是一个方法,也可以是多个方法。当同时对多个特定方法进行监听时,步骤S3中最终获得的卡顿信息是指监听的所有特定方法中发生卡顿的一个特定方法及其相关的信息。
作为一个可选的实施例,所述一种获取应用卡顿信息的方法还包括:
A1,通过第二监听线程监听开发包内所有方法的调用信息,并将所述调用信息存入所述方法调用统计队列中。
本实施例所述第二监听线程与第一监听线程各自独立执行,不具有同步关系,不存在交互,在上述S1、S2和S3执行的任意时间,本实施例第 二监听线程都在执行,互相不影响。所述第一监听线程在监听到应用卡顿后,需要用到所述第二监听线程记录的方法调用统计队列的数据。
本实施例通过第二监听线程预先获取开发包内的所有方法的调用信息,并将所有方法的调用信息都记录下来,存入方法调用统计队列中,以便发生卡顿时可以通过预先记录的各方法的调用信息,来判断发生卡顿的程序方法。
所述开发包,是指实现应用程序的某个功能的开发代码。在一个应用程序中,根据不同的功能划分,可以有一个或多个开发包。本实施例中,所述开发包内的所有方法,可以是一个开发包的所有方法,也可以是多个开发包内的所有方法,也可以是全部开发包内的所有方法,所述S1中所述特定方法是所述开发包的所有方法中的一个方法。本实施例对此不作限定。当在多个开发包的所有方法进行监听时,比在一个开发包的所有方法进行监听,程序所消耗的资源会更多,具体选择哪一种方式可以根据具体需要而定。
作为一个可选的实施例,所述A1进一步包括:
A1.1,在所述应用程序执行时,获取所述开发包内所有方法的每一次执行的第二开始时间和第二结束时间;
A1.2,当所述第二结束时间和第二开始时间的差值大于预定统计时间值时,将所述方法的调用信息存入所述方法调用统计队列中。
具体的,所述调用信息包括:方法的类名、函数名和代码行。
具体的,所述方法调用统计队列的关键值为所述方法的耗时时间,所述耗时时间是指所述方法的第二结束时间与第二开始时间的差值。
本实施例第二监听线程伴随应用程序的执行过程而执行,持续记录应用程序执行时所有方法的每一次执行的开始时间和结束时间。由于应用程序中大部分方法都是正常的不耗时的,为了避免统计到的大量正常不耗时的方法影响问题的分析,本实施例将所述第二结束时间和第二开始时间的差值小于所述预定统计时间值的调用信息全部过滤,不保存,而只保存所述第二结束时间和第二开始时间的差值大于所述预定统计时间值,这样可以大大减少所述方法调用统计队列的数据量,减轻应用程序的统计压力,同时可以简化后面通过所述方法调用统计队列来查找卡顿信息,缩短分析 时间。
本实施例中所述方法调用统计队列记录了应用执行时的每一个方法执行的顺序,时间点及耗时等信息。通过这样的记录,可以保证当卡顿发生时,根据卡顿发生的开始时间和结束时间从数据队列中获取到准确有效的程序方法,解决了卡顿发生时无法准确获取到方法的调用信息,无法准确定位到引起问题的方法。
本实施例中,具体的预定统计时间值,可以根据程序方法正常执行所需要消耗时间以及用户体验要求来定义,例如当一个特定方法正常执行需要16ms时,可以定义所述预定统计时间值为10ms。
那么,在应用程序执行过程中,所有执行耗时时间超过10ms的方法调用都将被记录到所述方法调用统计队列中,而所有执行耗时时间小于或等于10ms的方法调用都不会被记录到所述方法调用统计队列中。
所述方法调用统计队列中的一个记录值,包括关键值,方法的类名、函数名和代码行,其中所述关键值用于对所述方法调用统计队列进行检索,可以提高检索效率。
作为一个可选的实施例,所述S1进一步包括:
S1.1,在所述特定方法中切入第一监听执行点;
S1.2,利用所述第一监听执行点监听所述特定方法的执行过程。
本实施例中,在应用程序的需要监听的方法中,即一个具体的实现方法,也即所述特定方法,添加用于监听的代码,即第一监听执行点。则当所述特定方法执行时,所述第一监听执行点就会执行,从而进行监听。
作为一个可选的实施例,所述S2进一步包括:
S2.1,所述第一监听线程获取所述特定方法的执行持续时间;
S2.2,当所述执行持续时间大于预定卡顿时间值时,获取所述特定方法当前执行的开始时间为第一开始时间,获取当前时间为第一结束时间。
本实施例中,所述第一监听线程通过所述特定方法的执行持续时间来判断所述特定方法是否卡顿;当所述执行持续时间大于预定卡顿时间值时,即检测到应用卡顿,此时获取所述特定方法本次执行的开始时间为第一开始时间,获取当前时间为第一结束时间。
本实施例中,当检测到应用卡顿时,所述第一监听线程还可以获取所 述特定方法的类名、函数名和当前执行的代码行等等,以便后面进行卡顿分析使用,具体根据后续的分析需要而定,本实施例对此不作限定。
本实施中,所述预定卡顿时间值可以根据所述特定方法正常执行所需要消耗时间以及用户体验要求来定义,例如当一个特定方法正常执行需要16ms时,所述预定卡顿时间值可以定为300ms。
那么,当所述第一监听线程监听到所述特定方法的持续执行时间超过300ms时,即检测到发生卡顿。
作为一个可选的实施例,所述S3进一步包括:
S3.1,在所述方法调用统计队列中,获取所述第一开始时间到第一结束时间的时间段内所述特定方法的全部调用信息;
S3.2,从所述全部调用信息中获取耗时时间大于所述预定卡顿时间值的调用信息。
本实施中,由于所述方法调用统计队列中包含了所有执行耗时时间大于预定统计时间的方法的调用信息,因此在第一步,通过卡顿发生的开始时间和接收时间,获取该时间段内的调用信息的集合,并且获取所述特定方法的调用信息的集合,然后从所述特定方法的调用信息的集合获取耗时时间大于所述预定卡顿时间值的调用信息,即具体定位到了是在所述特定方法的哪一次调用时发生了卡顿,实现了对应用卡顿问题的精确定位。
作为一个可选的实施例,所述A1.1之前还包括:
在所述开发包内所有方法的构造函数内切入监听执行点;
设置所述监听执行点在所述开发包内所有方法执行前和执行后都进行统计。
本实施例中,所述开发包是指需要进行卡顿问题定位的开发包,可以对应用程序中所有的开发包,也可以是针对一个具体应用的开发包,所述第二监听线程通过在应用程序的方法的构造函数中切入监听点,实现对方法的监听;当程序方法被调用执行,必然被监听到。
监听的方法是,在应用程序的方法执行前和执行后都进行统计,在执行前记录开始时间,及第二开始时间,在执行后记录结束时间,即第二结束时间。
实施例一
下面通过一个具体实施例介绍本发明所述方法,该具体实施例的应用环境是安卓电视应用,安卓盒子应用或安卓手机应用,通过一个安卓应用的主界面来说明本发明所述方法;但本发明所述方法也可以应用于Windows操作系统、Linux操作系统或OS X操作系统,本实施例对此不作具体限定。
本实施例在PC上开发,操作系统为Android4.0,开发工具为Android Studio2.2,开发语言为java,所依赖的开发包为org.aspectj:aspectjtools:1.8.9,org.aspectj:aspectjweaver:1.8.9。
本实施例的具体实施包括:
1.通过AspectJ对应用代码的所有方法进行切入,监听所有方法的执行。
所述AspectJ是一种基于Java平台的面向切面的框架,可以对切面所连接的切入点织入代码,实现代码的注入。
通过定义Pointcut切入点切入代码,例如定义stackPointcut()方法连接点,注解@Pointcut("execution(*tv.douyu..*.*(..))"),其中@Pointcut表示切入点,execution表示方法和构造函数的执行点,*tv.douyu..*.*(..))表示包名是tv.douyu开头的所有方法,整个表示stackPointcut()方法切入包名是tv.douyu开头的所有方法的执行点。
通过切入应用的所有代码,可以实现对原应用代码的修改,便于监听原应用代码的执行。2.监听切入的应用代码执行点。
通过对切入点设置通知实现对方法的监听,例如定义stackMethod()方法,注解@Around("stackPointcut()"),其中@Around表示连接点执行前,执行完成后都通知,整个表示对步骤1中定义的stackPointcut()连接点执行前和执行后通知调用stackMethod()方法。
通过监听切入应用代码的执行点,可以实现对原应用代码执行时调用监听方法,从而可以实现对原应用方法执行统计信息。
3.统计原应用方法的执行信息。
实现步骤2中的stackMethod()方法,stackMethod()方法执行前获取方法开始时间startTime,startTime为此时代码执行时的当前时间System.currentTimeMillis(),再执行连接点的原方法,原应用方法执行完后, 即stackMethod()执行结束前获取方法的结束时间endTime,endTime为此时代码执行时的当前时间System.currentTimeMillis()。
此时的开始时间startTime即为第二开始时间,结束时间endTime即为所述第二结束时间。
计算方法执行结束的时间和方法执行开始的时间的差值即为原应用方法的执行耗时时间elapsedTime,代码为elapsedTime=endTime-startTime;
同时获取原应用的方法类名className,方法函数名methodName,方法在代码中的行数methodLine,可通过切入点ProceedingJoinPoint获取,代码为方法类名className=proceedingJoinPoint.getSignature().getDeclaringType().getName(),方法函数名methodName=proceedingJoinPoint.getSignature().getName(),方法行数即对应的代码行methodLine=proceedingJoinPoint.getSignature.getSourceLocation().getLine()。
通过统计原应用方法的执行信息,当卡顿发生时就可以了解方法的详细信息,方法耗时了多久,是哪个类的那个方法导致的,在哪一行都有清晰的记录。
4.记录原应用方法的调用信息到数据队列中。
应用中大部分方法都是正常的不耗时的,为了避免统计到的大量正常不耗时的方法影响问题的分析,对调用信息进行过滤。
假设应用界面绘制的周期是16ms,则过滤掉方法耗时小于10ms(毫秒)的方法信息,即判断方法执行耗时elapsedTime是否小于10ms,若是则过滤掉。
过滤后,将步骤3中统计到的方法耗时elapsedTime,方法类名className,方法函数名methodName,方法行数methodLine信息保存到数据队列中,数据队列可采用系统的LinkedHashMap链表哈希集合,其中key值为步骤3中的endTime方法执行完的时间,value内容为方法执行信息(elaspedTime,className,methodName,methosLine)。
本实施例中所述key值即所述关键值,所述数据队列即A1所述方法调用统计队列,所述10ms即A1.2中所述预定统计时间值。
通过记录原应用方法执行信息到数据队列中,可通过时间点获取到时间点对应的方法执行信息,当卡顿发生时就可以根据卡顿发生的开始时间和结束时间从数据队列中找出这段时间内的方法执行子队列,即卡顿时方法的调用执行情况。
通过步骤1,2,3,4对原应用所有方法切入代码,统计原应用运行时的方法耗时,方法类名,方法函数名,方法行数,并将统计到的原应用方法信息根据原方法执行结束的时间保存到数据队列中,记录了原应用执行时的每一个方法执行的顺序,时间点及耗时等信息。通过上述步骤可以保证当卡顿发生时,根据卡顿发生的开始时间和结束时间从数据队列中获取到准确有效的方法,解决了卡顿发生时无法准确获取到方法的调用信息,无法准确定位到引起问题的方法。
以上步骤1,2,3,4通过一个监听线程实现,即所述第二监听线程,以下步骤5、6通过另一个监听线程实现,即所述第一监听线程。
5.卡顿监听。
通过Choreographer.getInstance().postFrameCallback()的doFrame()回调方法,实时监听应用每一次的绘制情况,系统的绘制周期为16ms,即每16ms时界面绘制一次,每隔16毫秒doFrame()回调执行一次。
本实施例中所述doFrame()回调方法即S1中所述特定方法。
通过计算应用实际的绘制周期,两次绘制轮询的间隔,即两次doFrame()执行的时间差就可判断应用是否有卡顿,一般认为绘制周期大于300ms时人眼能感受到明显的卡顿。
记录每次doFrame()的执行时间currentFrameTime和上一次doFrame()的执行时间lastFrameTime,当前绘制周期frameTime=currentFrameTime-lastFrameTime。
6.卡顿时抓取方法的调用信息。
若步骤5中frameTime大于300ms时,说明发生了卡顿,导致当前绘制距离上次绘制时间超过了300ms。根据步骤5中上次绘制时间lastFrameTime和当前绘制时间currentFrameTime,在步骤4中记录的原应用方法调用信息数据队列中查找出这段时间对应的方法的调用信息,即lastFrameTime到currentFrameTime这段超过300ms时间内的原应用方法 调用信息。查找的方式通5过linkedHashMap.get(时间戳)的方式获取。
本实施例中,所述300ms即S2.2中所述预定卡顿时间值;所述上次绘制时间lastFrameTime即S2中所述第一开始时间,所述当前绘制时间currentFrameTime即S2中所述第一结束时间。
至此,一个应用卡顿问题被精确的定位了,开发和测试人员能够直接定位到引起问题发生的是哪个方法执行耗时导致的,只需要针对耗时方法进行修改和优化。
实施例二
图2是示出本申请实施例二的获取应用卡顿信息的设备的结构框图。
参照图2,所述获取应用卡顿信息的设备,包括:处理器(processor)301、存储器(memory)302、通信接口(Communications Interface)303和总线304;
其中,
所述处理器301、存储器302、通信接口303通过所述总线304完成相互间的通信;
所述处理器301用于调用所述存储器302中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:通过第一监听线程监听应用程序的特定方法;当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。
实施例三
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:通过第一监听线程监听应用程序的特定方法;当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。
实施例四
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可 读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:通过第一监听线程监听应用程序的特定方法;当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的显示装置的测试设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的实施例各实施例技术方案的范围。

Claims (12)

  1. 一种获取应用卡顿信息的方法,其特征在于,包括:
    S1,通过第一监听线程监听应用程序的特定方法;
    S2,当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;
    S3,基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。
  2. 如权利要求1所述的方法,其特征在于,还包括:
    A1,通过第二监听线程监听开发包内所有方法的调用信息,并将所述调用信息存入所述方法调用统计队列中。
  3. 如权利要求2所述的方法,其特征在于,所述A1进一步包括:
    A1.1,在所述应用程序执行时,获取所述开发包内所有方法的每一次执行的第二开始时间和第二结束时间;
    A1.2,当所述第二结束时间和第二开始时间的差值大于预定统计时间值时,将所述方法的调用信息存入所述方法调用统计队列中。
  4. 如权利要求1-3任一项所述的方法,其特征在于,所述调用信息包括:方法的类名、函数名和代码行。
  5. 如权利要求3所述方法,其特征在于,所述方法调用统计队列的关键值为所述方法的耗时时间,所述耗时时间是指所述方法的第二结束时间与第二开始时间的差值。
  6. 如权利要求1所述方法,其特征在于,所述S1进一步包括:
    S1.1,在所述特定方法中切入第一监听执行点;
    S1.2,利用所述第一监听执行点监听所述特定方法的执行过程。
  7. 如权利要求1所述方法,其特征在于,所述S2进一步包括:
    S2.1,所述第一监听线程获取所述特定方法的执行持续时间;
    S2.2,当所述执行持续时间大于预定卡顿时间值时,获取所述特定方法当前执行的开始时间为第一开始时间,获取当前时间为第一结束时间。
  8. 如权利要求7所述方法,其特征在于,所述S3进一步包括:
    S3.1,在所述方法调用统计队列中,获取所述第一开始时间到第一结束时间的时间段内所述特定方法的全部调用信息;
    S3.2,从所述全部调用信息中获取耗时时间大于所述预定卡顿时间值的调用信息。
  9. 如权利要求3所述方法,其特征在于,所述A1.1之前还包括:
    在所述开发包内所有方法的构造函数内切入第二监听执行点;
    设置所述第二监听执行点在所述开发包内所有方法执行前和执行后都进行统计。
  10. 一种获取应用卡顿信息的设备,其特征在于,包括:
    至少一个处理器;以及
    与所述处理器通信连接的至少一个存储器,其中:
    所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至9任一所述的方法。
  11. 一种计算机程序产品,其特征在于,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行如权利要求1至9任一所述的方法。
  12. 一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至9任一所述的方法。
PCT/CN2017/109161 2017-03-09 2017-11-02 一种获取应用卡顿信息的方法及设备 WO2018161622A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201710138644.0A CN107038107B (zh) 2017-03-09 2017-03-09 一种获取应用卡顿信息的方法及装置
CN201710138644.0 2017-03-09

Publications (1)

Publication Number Publication Date
WO2018161622A1 true WO2018161622A1 (zh) 2018-09-13

Family

ID=59533519

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2017/109161 WO2018161622A1 (zh) 2017-03-09 2017-11-02 一种获取应用卡顿信息的方法及设备

Country Status (2)

Country Link
CN (1) CN107038107B (zh)
WO (1) WO2018161622A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109426603B (zh) * 2017-08-21 2022-11-08 北京京东尚科信息技术有限公司 一种分析应用程序卡顿的方法和装置
CN107741897A (zh) * 2017-09-11 2018-02-27 广州市百果园信息技术有限公司 应用程序流畅度检测方法、装置及智能终端
CN107749914B (zh) * 2017-10-13 2020-10-30 北京小米移动软件有限公司 卡顿数据获取方法及装置
CN109840177B (zh) * 2017-11-24 2021-08-24 腾讯科技(深圳)有限公司 一种卡顿的处理方法及相关设备
CN108304294B (zh) * 2018-01-23 2020-05-12 武汉斗鱼网络科技有限公司 Ios应用的实时帧数监测方法、存储介质、设备及系统
CN110221922A (zh) * 2018-03-02 2019-09-10 网易(杭州)网络有限公司 程序产品的卡顿定位方法及装置、介质及计算设备
CN110502416B (zh) * 2018-05-16 2023-06-20 腾讯科技(上海)有限公司 应用卡顿检测方法、装置、计算机设备及可读介质
CN109189664B (zh) * 2018-07-24 2022-08-02 网宿科技股份有限公司 应用程序的信息采集方法及终端
CN110874301B (zh) * 2018-08-30 2022-09-13 腾讯科技(深圳)有限公司 程序卡顿信息的获取方法和装置
CN109343997A (zh) * 2018-10-31 2019-02-15 Oppo广东移动通信有限公司 卡顿检测方法、装置、终端及存储介质
CN109491907A (zh) * 2018-11-05 2019-03-19 网易(杭州)网络有限公司 一种卡顿检测方法、装置、电子设备和存储介质
CN111221697B (zh) * 2018-11-23 2024-02-27 阿里巴巴集团控股有限公司 调用监听方法、操作检测方法、装置及计算设备
CN110888781B (zh) * 2019-11-21 2021-11-16 腾讯科技(深圳)有限公司 一种应用卡顿检测方法及检测装置
CN111427779A (zh) * 2020-03-18 2020-07-17 深圳市乐宜科技有限公司 应用程序的卡顿信息采集方法和装置
CN111552613A (zh) * 2020-04-26 2020-08-18 北京字节跳动网络技术有限公司 线程超时的处理方法、装置以及电子设备
CN111858313A (zh) * 2020-06-24 2020-10-30 厦门亿联网络技术股份有限公司 一种界面卡顿检测方法、装置及存储介质
CN112882857A (zh) * 2021-03-10 2021-06-01 北京字节跳动网络技术有限公司 性能问题定位方法、装置、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130046498A1 (en) * 2011-08-16 2013-02-21 Askey Computer Corp. Multi-testing procedure management method and system
CN104965773A (zh) * 2015-07-09 2015-10-07 网易(杭州)网络有限公司 终端、卡顿检测方法、装置及游戏卡顿检测方法、装置
CN105589783A (zh) * 2014-11-18 2016-05-18 广州市动景计算机科技有限公司 应用程序卡顿问题数据获取方法及装置
CN105740326A (zh) * 2016-01-21 2016-07-06 腾讯科技(深圳)有限公司 浏览器的线程状态监测方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5696627B2 (ja) * 2011-09-14 2015-04-08 富士通株式会社 プログラム、情報処理装置、及び、情報処理方法
CN105389258B (zh) * 2015-12-10 2020-08-14 腾讯科技(深圳)有限公司 一种程序检测方法及装置
CN105677573B (zh) * 2016-02-26 2019-01-22 厦门美图移动科技有限公司 一种卡顿检测方法、装置及计算设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130046498A1 (en) * 2011-08-16 2013-02-21 Askey Computer Corp. Multi-testing procedure management method and system
CN105589783A (zh) * 2014-11-18 2016-05-18 广州市动景计算机科技有限公司 应用程序卡顿问题数据获取方法及装置
CN104965773A (zh) * 2015-07-09 2015-10-07 网易(杭州)网络有限公司 终端、卡顿检测方法、装置及游戏卡顿检测方法、装置
CN105740326A (zh) * 2016-01-21 2016-07-06 腾讯科技(深圳)有限公司 浏览器的线程状态监测方法及装置

Also Published As

Publication number Publication date
CN107038107A (zh) 2017-08-11
CN107038107B (zh) 2020-03-17

Similar Documents

Publication Publication Date Title
WO2018161622A1 (zh) 一种获取应用卡顿信息的方法及设备
CN106681811B (zh) 基于线程池的多线程调度方法及装置
US8464221B2 (en) Visualization tool for system tracing infrastructure events
US9355003B2 (en) Capturing trace information using annotated trace output
US10545807B2 (en) Method and system for acquiring parameter sets at a preset time interval and matching parameters to obtain a fault scenario type
EP3387534B1 (en) Client-side activity monitoring
CN101997925A (zh) 具有预警功能的服务器监控方法及其系统
US10095599B2 (en) Optimization for application runtime monitoring
CN109766241A (zh) 系统监控方法、装置、计算机设备及计算机可读存储介质
US9442817B2 (en) Diagnosis of application server performance problems via thread level pattern analysis
CN106528372B (zh) 一种程序运行监视系统和方法
WO2020232871A1 (zh) 一种微服务依赖分析方法及装置
CN108369550B (zh) 实时更改来自不同源的数据
CN104503912A (zh) 一种服务响应过程的监测方法及装置
CN105589794B (zh) 一种异常处理方法及装置
CN111339118A (zh) 基于Kubernetes的资源变更历史记录方法及装置
CN106713011B (zh) 一种获取测试数据的方法与系统
CN104410671A (zh) 一种快照抓取方法和数据监控工具
EP3230869A1 (en) Separating test verifications from test executions
US10915510B2 (en) Method and apparatus of collecting and reporting database application incompatibilities
WO2015184908A1 (zh) 一种反向调试方法、装置及调试器
CN110636116B (zh) 一种多维数据采集的系统及方法
CN111475423A (zh) 数据录入方法、装置、电子设备及可读存储介质
CN111949512A (zh) 应用程序的卡顿检测方法、装置、终端及介质
CN113285824B (zh) 一种监控网络配置命令安全性的方法及装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17900253

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17900253

Country of ref document: EP

Kind code of ref document: A1