一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种内存监控方法、终端、服务器、设备以及存储介质与流程

2021-10-20 00:46:00 来源:中国专利 TAG:终端 监控 内存 公开 服务器


1.本公开涉及计算机技术领域,具体而言,涉及一种内存监控方法、终端、服务器、设备以及存储介质。


背景技术:

2.目前,各种应用程序app在使用中会申请释放堆内存,在申请和释放内存的过程中,会出现内存异常问题,例如内存越界、野指针以及双释放doublefree,且以上内存异常问题发生时很难快速定位出异常位置,从而导致应用程序app在使用的期间出现内存异常问题时很难解决。
3.对于应用程序的监控检测等,大多是通过线下途径或者在应用程序发布前进行集中的检测,来监控应用程序运行过程中的内存异常问题,模拟运行环境与真正的运行环境始终存在一定区别,而且只能监控小范围的应用程序app的内存异常,很难做到大规模的监控内存异常,普适性较差。


技术实现要素:

4.本公开实施例至少提供一种内存监控方法、终端、服务器、设备以及存储介质。
5.本公开实施例提供了一种内存监控方法,应用于终端,所述方法包括:
6.获取服务器按照预设采样监控比例下发的内存配置文件,所述内存配置文件包括内存配置参数,其中,所述预设采样监控比例是根据终端的总量来设置的;
7.根据所述内存配置参数,申请用于监控应用线程的内存空间;
8.在检测到目标应用线程请求运行情况下,在所述内存空间中为所述目标应用线程分配目标运行内存;
9.在所述目标应用线程释放所述目标运行内存后,若检测到所述目标运行内存存在异常,确定所述目标应用线程的运行存在异常。
10.一种可选的实施方式中,所述在检测到目标应用线程请求运行情况下,在所述内存空间中为所述目标应用线程分配目标运行内存,包括:
11.在检测到目标应用线程请求运行情况下,基于所述目标应用线程的标识信息和所述内存配置文件指示的预设默认值,检测是否需要对所述目标应用线程进行监控;
12.若需要,在所述内存空间中为所述目标应用线程分配目标运行内存。
13.一种可选的实施方式中,所述若需要,在所述内存空间中为所述目标应用线程分配目标运行内存,包括:
14.若需要,接管所述目标应用线程的第一内存分配接口;
15.将所述第一内存分配接口替换为与申请的所述内存空间匹配的第二内存分配接口;
16.根据修改后的所述第二内存分配接口,在所述内存空间中为请求运行的目标应用线程分配目标运行内存。
17.一种可选的实施方式中,所述在检测到目标应用线程请求运行情况下,基于所述目标应用线程的标识信息和所述内存配置文件指示的预设默认值,检测是否需要对所述目标应用线程进行监控,包括:
18.在检测到目标应用线程请求运行情况下,基于所述目标应用线程的标识信息和针对所述目标应用线程的预设监控分配值,确定所述目标应用线程的初始监控采样值;
19.确定在申请到所述内存空间后,所述目标应用线程在此次请求运行之前的历史运行请求次数;
20.基于所述初始监控采样值、所述历史运行请求次数和所述内存配置文件指示的预设默认值,确定是否需要对所述目标应用线程进行监控。
21.一种可选的实施方式中,所述基于所述初始监控采样值、所述历史运行请求次数和所述内存配置文件指示的预设默认值,确定是否需要对所述目标应用线程进行监控,包括:
22.对所述初始监控采样值进行按位变换处理,得到中间监控采样值;
23.使用所述内存配置文件指示的预设默认值对所述中间监控采样值进行取余处理,得到余数值;
24.确定所述余数值与所述历史运行请求次数之间的差值是否小于或者等于预设阈值;
25.若所述差值小于或者等于所述预设阈值,确定需要对所述目标应用线程进行监控。
26.一种可选的实施方式中,所述方法还包括:
27.在确定需要对所述目标应用线程进行监控的情况下,针对所述目标应用线程的下一次请求运行,重置所述目标应用线程的所述历史运行请求次数为0。
28.一种可选的实施方式中,在所述目标应用线程释放所述目标运行内存后,若检测到所述目标运行内存存在异常,确定所述目标应用线程的运行存在异常之后,所述方法包括:
29.基于所述目标运行内存的异常信息,确定所述目标应用线程的异常类型;
30.将所述目标应用线程的、包括所述异常类型的异常信息反馈至所述服务器。
31.本公开实施例提供了一种内存监控方法,应用于服务器,所述方法包括:
32.根据终端的总量和预设采样监控信息,确定预设采样监控比例;
33.生成内存配置文件,所述内存配置文件包括针对内存的内存配置参数和针对应用线程进行计算的预设默认值;
34.按照所述预设采样监控比例,将所述内存配置文件下发至对应的终端;
35.接收终端反馈的目标应用线程的、包括异常类型的异常信息。
36.本公开实施例还提供一种终端,所述终端包括:
37.文件获取模块,用于获取服务器按照预设采样监控比例下发的内存配置文件,所述内存配置文件包括内存配置参数,其中,所述预设采样监控比例是根据终端的总量来设置的;
38.内存申请模块,用于根据所述内存配置参数,申请用于监控应用线程的内存空间;
39.内存分配模块,用于在检测到目标应用线程请求运行情况下,在所述内存空间中
为所述目标应用线程分配目标运行内存;
40.异常确定模块,用于在所述目标应用线程释放所述目标运行内存后,若检测到所述目标运行内存存在异常,确定所述目标应用线程的运行存在异常。
41.一种可选的实施方式中,所述内存分配模块,具体用于:
42.在检测到目标应用线程请求运行情况下,基于所述目标应用线程的标识信息和所述内存配置文件指示的预设默认值,检测是否需要对所述目标应用线程进行监控;
43.若需要,在所述内存空间中为所述目标应用线程分配目标运行内存。
44.一种可选的实施方式中,所述内存分配模块在用于若需要,在所述内存空间中为所述目标应用线程分配目标运行内存时,具体用于:
45.若需要,接管所述目标应用线程的第一内存分配接口;
46.将所述第一内存分配接口替换为与申请的所述内存空间匹配的第二内存分配接口;
47.根据修改后的所述第二内存分配接口,在所述内存空间中为请求运行的目标应用线程分配目标运行内存。
48.一种可选的实施方式中,所述内存分配模块在用于在检测到目标应用线程请求运行情况下,基于所述目标应用线程的标识信息和所述内存配置文件指示的预设默认值,检测是否需要对所述目标应用线程进行监控时,具体用于:
49.在检测到目标应用线程请求运行情况下,基于所述目标应用线程的标识信息和针对所述目标应用线程的预设监控分配值,确定所述目标应用线程的初始监控采样值;
50.确定在申请到所述内存空间后,所述目标应用线程在此次请求运行之前的历史运行请求次数;
51.基于所述初始监控采样值、所述历史运行请求次数和所述内存配置文件指示的预设默认值,确定是否需要对所述目标应用线程进行监控。
52.一种可选的实施方式中,所述内存分配模块在用于基于所述初始监控采样值、所述历史运行请求次数和所述内存配置文件指示的预设默认值,确定是否需要对所述目标应用线程进行监控时,具体用于:
53.对所述初始监控采样值进行按位变换处理,得到中间监控采样值;
54.使用所述内存配置文件指示的预设默认值对所述中间监控采样值进行取余处理,得到余数值;
55.确定所述余数值与所述历史运行请求次数之间的差值是否小于或者等于预设阈值;
56.若所述差值小于或者等于所述预设阈值,确定需要对所述目标应用线程进行监控。
57.一种可选的实施方式中,所述终端还包括重置模块,所述重置模块用于:
58.在确定需要对所述目标应用线程进行监控的情况下,针对所述目标应用线程的下一次请求运行,重置所述目标应用线程的所述历史运行请求次数为0。
59.一种可选的实施方式中,所述终端还包括反馈模块,所述反馈模块用于:
60.基于所述目标运行内存的异常信息,确定所述目标应用线程的异常类型;
61.将所述目标应用线程的、包括所述异常类型的异常信息反馈至所述服务器。
62.本公开实施例还提供一种服务器,所述服务器包括:
63.比例确定模块,用于根据终端的总量和预设采样监控信息,确定预设采样监控比例;
64.文件生成模块,用于生成内存配置文件,所述内存配置文件包括针对内存的内存配置参数和针对应用线程进行计算的预设默认值;
65.文件发送模块,用于按照所述预设采样监控比例,将所述内存配置文件下发至对应的终端;
66.信息接收模块,用于接收终端反馈的目标应用线程的、包括所述异常类型的异常信息。
67.本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述实施方式中的步骤。
68.本公开实施例还提供一种计算机存储介质,该计算机存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述实施方式中的步骤。
69.本公开实施例提供的内存监控方法、终端、服务器、设备以及存储介质,在服务器侧生成内存配置文件,根据预设采样监控比例下发内存配置文件,接收终端反馈的异常信息,在终端侧获取服务器下发的内存配置文件,根据内存配置文件中的内存配置参数,申请用于监控应用线程的内存空间,当目标应用线程请求运行时,在所述内存空间中为目标应用线程分配内存,在目标应用线程释放内存后,若检测到释放后的内存存在异常,确定所述目标应用线程的运行存在异常。
70.这样,可以实现对大多数终端应用程序内存异常的监控,可以进行大规模的应用,提高了内存异常监控的终端覆盖率,在终端申请独立内存空间来监控目标线程的运行问题,可以精准的定位内存异常位置。
71.进一步,通过目标应用线程的标识信息和所述内存配置文件指示的预设默认值,在确定需要对所述目标应用线程进行监控时,再为所述目标应用线程分配目标运行内存,可以实现对终端中各应用线程的采样,有效避免了因为监控过量造成的被监控应用程序的性能问题,实现在有效监控应用程序运行的内存异常的同时减少对被监控应用程序的性能影响。
72.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
73.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
74.图1示出了本公开实施例提供的一种内存监控系统的结构图;
75.图2示出了本公开实施例所提供的另一种内存监控方法的流程图;
76.图3示出了本公开实施例所提供的另一种内存监控方法的流程图;
77.图4示出了本公开实施例所提供的一种内存监控方法的流程图;
78.图5示出了本公开实施例所提供的一种终端的示意图;
79.图6示出了本公开实施例所提供的一种终端的示意图之二;
80.图7示出了本公开实施例所提供的一种服务器的示意图;
81.图8示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
82.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
83.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
84.本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
85.经研究发现,目前对于应用程序的监控检测等,大多是通过线下途径或者在应用程序发布前进行集中的检测,来监控应用程序运行过程中的内存异常问题,模拟运行环境与真正的运行环境始终存在一定区别,而且只能监控小范围的应用程序app的内存异常,很难做到大规模的监控内存异常,普适性较差。
86.基于上述研究,本公开提供了一种内存监控方法,在服务器侧生成内存配置文件,根据预设采样监控比例下发内存配置文件,接收终端反馈的异常信息,在终端侧获取服务器下发的内存配置文件,根据内存配置文件中的内存配置参数,申请用于监控应用线程的内存空间,当目标应用线程请求运行时,在所述内存空间中为目标应用线程分配内存,在目标应用线程释放内存后,若检测到释放后的内存存在异常,确定所述目标应用线程的运行存在异常。
87.这样,可以通过预设采样监控比例进行线上采样,实现对大多数应用程序内存异常的采样监控,可以进行大规模的线上应用,提高了内存异常监控的终端覆盖率,在终端中申请独立内存空间来监控目标线程的运行问题,可以精准和快速的定位内存异常位置,有助于提高应用的监控效率和检测准确率。
88.为便于对本实施例进行理解,首先对本公开实施例所公开的一种内存监控方法进行详细介绍,本公开实施例所提供的内存监控方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(user equipment,ue)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字
助理(personal digital assistant,pda)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该内存监控方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
89.请参阅图1,图1为本公开实施例提供的一种内存监控系统的结构图。如图1中所示,内存监控系统包括服务器和多个终端,如图1中所示的终端1、终端2

终端n,每个终端均与所述服务器通信连接。其中,所述服务器可以生成用于下发至所述终端的内存配置文件,并且可以根据所述终端的数量、采样监控精度等因素,设置预设采样监控比例,从而按照所述预设采样监控比例下发相应数量的所述内存配置文件,在下发所述内存配置文件时,可以是定向的向相应数量的、指定的所述终端下发所述内存配置文件,也可以是随机下发相应数量的所述内存配置文件,供所述终端自由获取。所述终端可以接收所述内存配置文件,并且所述终端根据所述内存配置文件对所述终端中安装的应用线程进行采样监控。
90.请参阅图2,图2为本公开实施例提供的一种内存监控方法的流程图。本公开实施例提供的内存监控方法应用于终端,如图2中所示,所述方法包括:
91.s101:获取服务器按照预设采样监控比例下发的内存配置文件,所述内存配置文件包括内存配置参数,其中,所述预设采样监控比例是根据终端的总量来设置的。
92.该步骤中,在获取到服务器按照预设采样监控比例下发的内存配置文件后,可以通过对所述内存配置文件的解析等方式,来获得所述内存配置文件包括内存配置参数,其中,所述预设采样监控比例是根据终端的总量来设置的。
93.其中,内存配置参数是提前设置好的默认值,其可以是通过随机函数生成的随机的数值,也可以是通过终端的配置、采样监控的精度需求和应用线程的参数等因素配置的值,例如在定向下发的情况下,可以参考终端的配置、终端中的应用线程等因素配置内存配置参数。
94.其中,获取服务器按照预设采样监控比例下发的内存配置文件的方式可以是随机从服务器中拉取的,也可以是命中服务器的下发条件从而获取的。
95.s102:根据所述内存配置参数,申请用于监控应用线程的内存空间。
96.该步骤中,根据从内存配置文件中解析出的所述内存配置函数,通过执行内存申请函数等工具或者方式,向终端发出内存申请请求,申请一个连续的内存空间,用来给需要被监控的应用线程分配内存,即申请一个独立的内存块来给需要被监控的应用线程使用。
97.其中,申请用于监控应用线程的内存空间之后,将所述内存空间的读写状态设置为不可读写。
98.其中,所述内存空间的取值范围可以是70k至8m。
99.s103:在检测到目标应用线程请求运行情况下,在所述内存空间中为所述目标应用线程分配目标运行内存。
100.该步骤中,当检测到有目标应用线程向终端发出请求运行指令时,可以在申请的所述内存空间中为所述目标应用线程分配目标运行内存,以便供所述目标应用线程运行,并对所述目标应用线程进行监控。
101.其中,在所述内存空间中为所述目标应用线程分配目标运行内存时,将所述目标运行内存的读写状态设置为可读写状态。
102.s104:在所述目标应用线程释放所述目标运行内存后,若检测到所述目标运行内
存存在异常,确定所述目标应用线程的运行存在异常。
103.该步骤中,在所述内存空间中为所述目标应用线程分配目标运行内存之后,当所述目标应用线程执行完成并释放所述目标运行内存后,将释放后的所述目标运行内存的读写状态设置为不可读写,并对所述目标运行内存进行检测,当检测到所述目标运行内存存在异常,则可以确定在所述目标运行内存执行过的所述目标应用线程的运行存在异常。
104.本公开实施例提供的内存监控方法,通过获取服务器按照预设采样监控比例下发的内存配置文件,所述内存配置文件包括内存配置参数,其中,所述预设采样监控比例是根据终端的总量来设置的,根据所述内存配置参数,申请用于监控应用线程的内存空间,在检测到目标应用线程请求运行情况下,在所述内存空间中为所述目标应用线程分配目标运行内存,在所述目标应用线程释放所述目标运行内存后,若检测到所述目标运行内存存在异常,确定所述目标应用线程的运行存在异常。
105.这样,可以通过预设采样监控比例进行线上采样,实现对大多数应用程序内存异常的采样监控,可以进行大规模的线上应用,提高了内存异常监控的终端覆盖率,在终端中申请独立内存空间来监控目标线程的运行问题,可以精准和快速的定位内存异常位置,有助于提高应用的监控效率和检测准确率。
106.请参阅图3,图3为本公开实施例提供的另一种内存监控方法的流程图。本公开实施例提供的内存监控方法应用于终端,如图2中所示,所述方法包括:
107.s201:获取服务器按照预设采样监控比例下发的内存配置文件,所述内存配置文件包括内存配置参数,其中,所述预设采样监控比例是根据终端的总量来设置的。
108.s202:根据所述内存配置参数,申请用于监控应用线程的内存空间。
109.s203:在检测到目标应用线程请求运行情况下,在所述内存空间中为所述目标应用线程分配目标运行内存。
110.s204:在所述目标应用线程释放所述目标运行内存后,若检测到所述目标运行内存存在异常,确定所述目标应用线程的运行存在异常。
111.s205:基于所述目标运行内存的异常信息,确定所述目标应用线程的异常类型。
112.该步骤中,根据确定所述目标应用线程的运行存在异常,生成所述目标运行内存的异常信息,可以通过对所述目标运行内存的异常信息的分析等操作,确定所述目标应用线程的异常类型。
113.其中,所述目标应用线程的异常类型可以包括内存越界、野指针以及双释放doublefree。
114.s206:将所述目标应用线程的、包括所述异常类型的异常信息反馈至所述服务器。
115.该步骤中,将确定出的所述目标应用线程的、包括所述异常类型的异常信息可以打包成文件或压缩包等方式反馈给所述服务器。
116.其中,步骤s201至步骤s204的描述,可以参照步骤s101至步骤s104的描述,并且可以达到相同的技术效果和解决相同的技术问题,在此不做赘述。
117.接下来,结合具体实施方式进一步对本实施例进行说明。
118.一种可选的实施方式中,所述在检测到目标应用线程请求运行情况下,在所述内存空间中为所述目标应用线程分配目标运行内存,包括:
119.在检测到目标应用线程请求运行情况下,基于所述目标应用线程的标识信息和所
述内存配置文件指示的预设默认值,检测是否需要对所述目标应用线程进行监控;
120.若需要,在所述内存空间中为所述目标应用线程分配目标运行内存。
121.该步骤中,当检测到有目标应用线程向终端发出请求运行指令时,根据获取所述目标应用线程的标识信息以及通过解析所述内存配置文件获得的所述内存配置文件指示的预设默认值,对所述目标应用线程进行检测,通过检测结果来判定是否需要对所述目标应用线程进行监控,如果根据检测结果判定需要对所述目标应用线程进行监控,则可以通过调用针对所述目标应用线程的内存分配接口等方式,在所述内存空间中为所述目标应用线程分配目标运行内存。
122.其中,内存分配接口可以对应源码中的内存管理函数,通过内存分配接口可以调用内存管理函数的代码,以运行内存管理函数,实现内存的分配。
123.具体地,若需要对所述目标应用线程进行监控,可以通过接管所述目标应用线程的第一内存分配接口;将所述内存分配接口替换为与申请的所述内存空间匹配的第二内存分配接口;根据所述第二内存分配接口,在所述内存空间中为请求运行的目标应用线程分配目标运行内存。
124.其中,所述第一内存分配接口,其指向为所述目标应用分配的运行内存空间,用以在所述运行内存空间内分配给各线程所需的运行内存,在申请到用于监控应用线程的内存空间后,由于申请的内存空间是单独管理,以对目标应用线程的运行进行监控的,所以所述第一内存分配接口所指向的运行内存空间主要为运行内存空间中出申请的所述内存空间之外的其他内存空间,所述第二内存分配接口指向单独申请的并进行单独管理的所述内存空间。
125.其中,接管所述内存分配接口,可以是通过相应的内存申请接管工具hook,通过指令拦截等方式接管用于调用接口的指令。
126.其中,接管所述目标应用线程的内存分配接口指的是所述目标应用线程原有的向终端系统内存发送请求内存指令的内存分配接口,修改后的所述内存分配接口指的是所述目标应用线程向申请的所述内存空间发送请求内存指令的内存分配接口。
127.这样,通过检测是否需要为目标应用线程分配目标运行内存,可以实现终端中应用线程的采样,从而有效避免了因为监控过量造成的被监控应用程序的性能问题,实现在有效监控应用程序运行的内存异常的同时减少对被监控应用程序的性能影响。
128.一种可选的实施方式中,所述在检测到目标应用线程请求运行情况下,基于所述目标应用线程的标识信息和所述内存配置文件指示的预设默认值,检测是否需要对所述目标应用线程进行监控,包括:
129.在检测到目标应用线程请求运行情况下,基于所述目标应用线程的标识信息和针对所述目标应用线程的预设监控分配值,确定所述目标应用线程的初始监控采样值;
130.确定在申请到所述内存空间后,所述目标应用线程在此次请求运行之前的历史运行请求次数;
131.基于所述初始监控采样值、所述历史运行请求次数和所述内存配置文件指示的预设默认值,确定是否需要对所述目标应用线程进行监控。
132.该步骤中,在检测到目标应用线程请求运行情况下,首先获取所述目标应用线程的标识信息和针对所述目标应用线程的预设监控分配值,其次对获取的所述目标应用线程
的标识信息和针对所述目标应用线程的预设监控分配值进行计算,根据计算结果确定所述目标应用线程的初始监控采样值,在申请到所述内存空间后,获取所述目标应用线程在此次请求运行之前的历史运行请求次数,根据计算出的所述初始监控采样值、所述历史运行请求次数以及所述内存配置文件指示的预设默认值,来确定是否需要对所述目标应用线程进行监控。
133.其中,所述历史运行请求次数,可以是指在申请到所述内存空间后,在此次检测是否需要进行监控之前的上一次对所述目标应用线程进行监控之后请求运行的次数。
134.其中,针对所述目标应用线程的预设监控分配值可以是通过随机函数来随机分配的方式获得的。
135.一种可选的实施方式中,所述基于所述初始监控采样值、所述历史运行请求次数和所述内存配置文件指示的预设默认值,确定是否需要对所述目标应用线程进行监控,包括:
136.对所述初始监控采样值进行按位变换处理,得到中间监控采样值;
137.使用所述内存配置文件指示的预设默认值对所述中间监控采样值进行取余处理,得到余数值;
138.确定所述余数值与所述历史运行请求次数之间的差值是否小于或者等于预设阈值;
139.若所述差值小于或者等于所述预设阈值,确定需要对所述目标应用线程进行监控。
140.该步骤中,对所述初始监控采样值先进行按位左移计算或者按位右移计算,得到中间计算值,再将中间计算值进行按位异或计算,得到中间监控采样值,通过所述内存配置文件指示的预设默认值对所述中间监控采样值进行取余处理,得到余数值,计算所述余数值与所述历史运行请求次数之间的差值,判断得到的差值是否小于或者等于预设阈值,若所述差值小于或者等于所述预设阈值,则确定需要对所述目标应用线程进行监控。
141.其中预设阈值可以通过随机函数获得。
142.示例性的,初始监控采样值a可以通过以下方式表示:
143.a=random() 线程id
144.其中,a指的是初始监控采样值,random()计算出的值指随机获取的针对所述目标应用线程的预设监控分配值,线程id指所述目标应用线程的标识信息。
145.具体地,对所述初始监控采样值a进行按位变换处理,得到中间监控采样值d可以通过以下方式表示:
146.b=a^(a<<n);
147.c=b^(b>>m);
148.d=c^(c<<k)
149.其中,b表示将所述初始监控采样值a进行按位左移之后再进行按位异或获得的值,a<<n表示将a按位左移n位,n表示对所述初始监控采样值a进行按位左移时左移的位数,c表示将计算出的b进行按位左移之后再进行按位异或获得的值,b>>m表示将b按位右移m位,m表示对所述初始监控采样值a进行按位右移时右移的位数,d表示将计算出的c进行按位左移之后,再进行按位异或操作时得到中间监控采样值d,c<<k表示将c按位左移k位,k表
示对计算出的c进行按位左移之后再进行按位异或时异或的位数。
150.进一步的,使用所述内存配置文件指示的预设默认值对所述中间监控采样值进行取余处理,得到余数值,余数值e可以通过以下方式表示:
151.e=d%(2*a 1)
152.其中,e表示得到的余数值,a表示所述内存配置文件指示的预设默认值。
153.进一步的,当所述目标应用线程请求运行一次,则余数值e进行一次减减计算操作,获得所述目标应用线程在此次请求运行之前的历史运行请求次数,根据所述历史运行请求次数,计算所述余数值与所述历史运行请求次数之间的差值,根据差值来判断当前所述目标线程是否需要进行监控。
154.一种可选的实施方式中,所述方法还包括:
155.在确定需要对所述目标应用线程进行监控的情况下,针对所述目标应用线程的下一次请求运行,重置所述目标应用线程的所述历史运行请求次数为0。
156.该步骤中,在确定需要对所述目标应用线程进行监控的情况下,当所述目标应用线程再次请求运行时,则将所述目标应用线程的所述历史运行请求次数重置为0,即当确定对本次请求运行的所述目标应用线程进行监控时,若所述目标应用程序线程再次请求运行时,将所述历史运行请求次数重置为0。
157.本公开实施例提供的内存监控方法,通过获取服务器按照预设采样监控比例下发的内存配置文件,所述内存配置文件包括内存配置参数,其中,所述预设采样监控比例是根据终端的总量来设置的,根据所述内存配置参数,申请用于监控应用线程的内存空间,在检测到目标应用线程请求运行情况下,在所述内存空间中为所述目标应用线程分配目标运行内存,在所述目标应用线程释放所述目标运行内存后,若检测到所述目标运行内存存在异常,确定所述目标应用线程的运行存在异常,基于所述目标运行内存的异常信息,确定所述目标应用线程的异常类型,将所述目标应用线程的、包括所述异常类型的异常信息反馈至所述服务器。
158.这样,可以通过预设采样监控比例进行线上采样,实现对大多数应用程序内存异常的采样监控,可以进行大规模的线上应用,提高了内存异常监控的终端覆盖率,在终端中申请独立内存空间来监控目标线程的运行问题,可以精准和快速的定位内存异常位置,有助于提高应用的监控效率和检测准确率。
159.请参阅图4,图4为本公开实施例提供的内存监控方法的流程图。本公开实施例提供的内存监控方法应用于服务器,如图4所示,所述方法包括:
160.s301:根据终端的总量和预设采样监控信息,确定预设采样监控比例。
161.其中,预设采样监控信息可以指监控精度、采样精度等信息。
162.s302:生成内存配置文件,所述内存配置文件包括针对内存的内存配置参数和针对应用线程进行计算的预设默认值。
163.s303:按照所述预设采样监控比例,将所述内存配置文件下发至对应的终端。
164.s304:接收终端反馈的目标应用线程的、包括异常类型的异常信息。
165.本公开实施例提供的内存监控方法,通过根据终端的总量和预设采样监控信息,确定预设采样监控比例,生成内存配置文件,所述内存配置文件包括针对内存的内存配置参数和针对应用线程进行计算的预设默认值,按照所述预设采样监控比例,将所述内存配
置文件下发至对应的终端,接收终端反馈的目标应用线程的、包括异常类型的异常信息。
166.这样,在服务器侧预设采样监控比例,根据预设采样监控比例来下发生成的内存配置文件,可以实现对大多数应用程序内存异常的采样监控,可以进行大规模的线上应用,提高了内存异常监控的终端覆盖率。
167.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
168.基于同一发明构思,本公开实施例中还提供了与内存监控方法对应的内存监控装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述内存监控方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
169.请参阅图5至图6,图5为本公开实施例提供的一种终端的示意图,图6为本公开实施例提供的一种终端的示意图之二。如图5中所示,本公开实施例提供的终端400,包括:
170.文件获取模块410,用于获取服务器按照预设采样监控比例下发的内存配置文件,所述内存配置文件包括内存配置参数,其中,所述预设采样监控比例是根据终端的总量来设置的;
171.内存申请模块420,用于根据所述内存配置参数,申请用于监控应用线程的内存空间;
172.内存分配模块430,用于在检测到目标应用线程请求运行情况下,在所述内存空间中为所述目标应用线程分配目标运行内存;
173.异常确定模块440,用于在所述目标应用线程释放所述目标运行内存后,若检测到所述目标运行内存存在异常,确定所述目标应用线程的运行存在异常。一种可选的实施方式中,所述内存分配模块,具体用于:
174.在检测到目标应用线程请求运行情况下,基于所述目标应用线程的标识信息和所述内存配置文件指示的预设默认值,检测是否需要对所述目标应用线程进行监控;
175.若需要,在所述内存空间中为所述目标应用线程分配目标运行内存。
176.一种可选的实施方式中,所述内存分配模块430在用于若需要,在所述内存空间中为所述目标应用线程分配目标运行内存时,具体用于:
177.若需要,接管所述目标应用线程的第一内存分配接口;
178.将所述第一内存分配接口替换为与身亲的所述内存空间匹配的第二内存分配接口;
179.根据修改后的所述第二内存分配接口,在所述内存空间中为请求运行的目标应用线程分配目标运行内存。
180.一种可选的实施方式中,所述内存分配模块430在用于在检测到目标应用线程请求运行情况下,基于所述目标应用线程的标识信息和所述内存配置文件指示的预设默认值,检测是否需要对所述目标应用线程进行监控时,具体用于:
181.在检测到目标应用线程请求运行情况下,基于所述目标应用线程的标识信息和针对所述目标应用线程的预设监控分配值,确定所述目标应用线程的初始监控采样值;
182.确定在申请到所述内存空间后,所述目标应用线程在此次请求运行之前的历史运行请求次数;
183.基于所述初始监控采样值、所述历史运行请求次数和所述内存配置文件指示的预设默认值,确定是否需要对所述目标应用线程进行监控。
184.一种可选的实施方式中,所述内存分配模块430在用于基于所述初始监控采样值、所述历史运行请求次数和所述内存配置文件指示的预设默认值,确定是否需要对所述目标应用线程进行监控时,具体用于:
185.对所述初始监控采样值进行按位变换处理,得到中间监控采样值;
186.使用所述内存配置文件指示的预设默认值对所述中间监控采样值进行取余处理,得到余数值;
187.确定所述余数值与所述历史运行请求次数之间的差值是否小于或者等于预设阈值;
188.若所述差值小于或者等于所述预设阈值,确定需要对所述目标应用线程进行监控。
189.一种可选的实施方式中,所述终端400还包括重置模块450,所述重置模块450用于:
190.在确定需要对所述目标应用线程进行监控的情况下,针对所述目标应用线程的下一次请求运行,重置所述目标应用线程的所述历史运行请求次数为0。
191.一种可选的实施方式中,所述终端400还包括反馈模块460,所述反馈模块460用于:
192.基于所述目标运行内存的异常信息,确定所述目标应用线程的异常类型;
193.将所述目标应用线程的、包括所述异常类型的异常信息反馈至所述服务器。
194.请参阅图7,图7为本公开实施例提供的一种服务器的示意图。本公开实施例提供的一种服务器500,如图7中所示,包括:
195.比例确定模块510,用于根据终端的总量和预设采样监控信息,确定预设采样监控比例;
196.文件生成模块520,用于生成内存配置文件,所述内存配置文件包括针对内存的内存配置参数和针对应用线程进行计算的预设默认值;
197.文件发送模块530,用于按照所述预设采样监控比例,将所述内存配置文件下发至对应的终端;
198.信息接收模块540,用于接收终端反馈的目标应用线程的、包括所述异常类型的异常信息。
199.关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
200.本公开实施例提供的内存监控方法、终端、服务器、设备以及存储介质,通过在服务器侧生成内存配置文件,并根据预设采样监控比例下发内存配置文件,在终端侧根据下发的内存配置文件申请用于监控应用线程的内存空间,并在内存空间中为目标应用线程分配内存,以在目标应用线程释放内存后,若检测到释放后的内存存在异常,可以确定目标应用线程的存在异常。
201.这样,可以通过预设采样监控比例进行线上采样,实现对大多数应用程序内存异常的采样监控,可以进行大规模的线上应用,提高了内存异常监控的终端覆盖率,在终端中
申请独立内存空间来监控目标线程的运行问题,可以精准和快速的定位内存异常位置,有助于提高应用的监控效率和检测准确率。
202.基于同一技术构思,本技术实施例还提供了一种电子设备。
203.本公开实施例还提供了一种电子设备700,如图8所示,为本公开实施例提供的电子设备700结构示意图,包括:
204.处理器710、存储器720、和总线730;存储器720用于存储执行指令,包括内存721和外部存储器722;这里的内存721也称内存储器,用于暂时存放处理器710中的运算数据,以及与硬盘等外部存储器722交换的数据,处理器710通过内存721与外部存储器722进行数据交换,当所述电子设备700运行时,所述处理器710与所述存储器720之间通过总线730通信,使得所述处理器710可以执行上述方法实施例中所示的内存监控方法的步骤。
205.本公开实施例还提供一种计算机存储介质,该计算机存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的内存监控方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
206.本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的内存监控方法的步骤,具体可参见上述方法实施例,在此不再赘述。
207.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
208.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的终端、服务器、设备和存储介质的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的终端、服务器、设备、存储介质和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
209.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
210.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
211.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所
述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
212.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜