CN112579295B - 图像内存分析方法、装置、电子设备和存储介质 - Google Patents
图像内存分析方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112579295B CN112579295B CN202011562505.9A CN202011562505A CN112579295B CN 112579295 B CN112579295 B CN 112579295B CN 202011562505 A CN202011562505 A CN 202011562505A CN 112579295 B CN112579295 B CN 112579295B
- Authority
- CN
- China
- Prior art keywords
- image
- application program
- function
- image processing
- processing function
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 155
- 238000004458 analytical method Methods 0.000 title claims abstract description 95
- 230000006870 function Effects 0.000 claims abstract description 251
- 238000012545 processing Methods 0.000 claims abstract description 119
- 238000000034 method Methods 0.000 claims description 34
- 230000009191 jumping Effects 0.000 claims description 14
- 238000012544 monitoring process Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 4
- 238000010191 image analysis Methods 0.000 abstract 1
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种图像内存分析方法、装置、电子设备和存储介质,图像内存分析方法包括:当检测到图像处理函数被应用程序调用时,控制应用程序跳转至预设的钩子函数,钩子函数用于获取图像处理函数的运行信息;接收钩子函数返回的运行信息;根据运行信息对应用程序的图像内存进行分析得到图像内存分析结果;控制应用程序跳转至图像处理函数。本发明实现了在应用程序调用图像处理函数时跳转到钩子函数,通过钩子函数来钩取图像处理函数获得运行信息,根据运行信息分析应用程序的图像内存结果,使得开发人员能够针对应用程序的图像进行分析,可以根据图像分析优化应用程序的开发,提高应用程序的稳定性。
Description
技术领域
本发明实施例涉及应用程序内存分析技术领域,尤其涉及一种图像内存分析方法、装置、电子设备和存储介质。
背景技术
在移动直播应用程序中,内存的使用是开发者关注的热点,优化好内存,可以使移动直播应用程序播放视频时帧率更加稳定,降低因为内存不足而导致移动直播应用程序崩溃的概率。
在移动直播应用程序运行过程中,bitmap(图像处理类)消耗的内存比例最高,移动直播应用程序内存优化的切入点在于分析bitmap的内存占用来优化内存。现有移动直播应用程序分析内存的方法,开发人员大多是基于Android studio的Memory Profiler分析工具来分析内存,但是该工具是分析移动直播应用程序运行过程中占用的所有内存,并没有针对bitmap,内存分析粒度比较粗糙,应用程序开发人员无法获取bitmap详细占用内存的情况来优化设计应用程序。
发明内容
本发明实施例提供一种图像内存分析方法、装置、电子设备和存储介质,以解决现有技术中无法对应用程序的图像内存进行精细粒度分析的问题。
第一方面,本发明实施例提供了一种图像内存分析方法,应用于应用程序中分析图像内存,包括:
当检测到图像处理函数被应用程序调用时,控制所述应用程序跳转至预设的钩子函数,所述钩子函数用于获取所述图像处理函数的运行信息;
接收所述钩子函数返回的运行信息;
根据所述运行信息对所述应用程序的图像内存进行分析得到图像内存分析结果;
控制所述应用程序跳转至所述图像处理函数。
第二方面,本发明实施例提供了一种图像内存分析装置,应用于应用程序中分析图像内存,包括:
钩子函数跳转模块,用于当检测到图像处理函数被应用程序调用时,控制所述应用程序跳转至预设的钩子函数,所述钩子函数用于获取所述图像处理函数的运行信息;
运行信息接收模块,用于接收所述钩子函数返回的运行信息;
内存分析模块,用于根据所述运行信息对所述应用程序的图像内存进行分析得到图像内存分析结果;
图像处理函数跳转模块,用于控制所述应用程序跳转至所述图像处理函数。
第三方面,本发明实施例提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所述的图像内存分析方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明所述的图像内存分析方法。
本发明实施例的图像内存分析方法,应用于应用程序中分析图像内存,当检测到图像处理函数被应用程序调用时,控制应用程序跳转至预设的钩子函数,钩子函数用于获取图像处理函数的运行信息,在接收所述钩子函数返回的运行信息后,根据运行信息对应用程序的图像内存进行分析得到图像内存分析结果,控制应用程序跳转至所述图像处理函数。本发明实施例实现了在应用程序调用图像处理函数来处理图像时跳转到钩子函数,通过钩子函数来钩取图像处理函数获取到图像处理函数的运行信息,根据该运行信息对图像处理函数的内存进行分析,能够针对性地对应用程序的图像内存进行分析,高度精细化的分析应用程序的图像内存,使得开发人员可以根据应用程序运行过程中的图像内存分析结果来优化应用程序的开发,提高应用程序的稳定性。
附图说明
图1是本发明实施例一提供的一种图像内存分析方法的步骤流程图;
图2是本发明实施例二提供的一种图像内存分析方法的步骤流程图;
图3是本发明的一个示例中图像内存分析方法的流程图;
图4是本发明实施例三提供的一种图像内存分析装置的结构框图;
图5是本发明实施例四提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合。
实施例一
图1为本发明实施例一提供的一种图像内存分析方法的步骤流程图,本发明实施例可适用于应用程序运行过程中分析图像内存的情况,该方法可以由本发明实施例的图像内存分析装置来执行,该图像内存分析装置可以由硬件或软件来实现,并集成在本发明实施例所提供的电子设备中,具体地,如图1所示,本发明实施例的图像内存分析方法可以包括如下步骤:
S101、当检测到图像处理函数被应用程序调用时,控制所述应用程序跳转至预设的钩子函数,所述钩子函数用于获取所述图像处理函数的运行信息。
在本发明实施例中,应用程序可以是直播、短视频等应用程序,以直播应用程序为示例,在直播应用程序中,当响应用户的操作进行图像操作时,图像处理函数被调用,在一个场景中,当用户点击礼物打赏时,在直播界面展示打赏礼物的画面,则需要生成该礼物的图像,由此触发直播应用程序调用图像处理函数来生成礼物的图像,在另一个场景中,当用户需要在直播界面展示某种动画特效时,响应用户的操作后触发直播应用程序调用图像处理函数来生成特效的图像。
其中,图像处理函数可以是生成图像的函数,还可以是对图像进行翻转、缩放、裁剪、颜色变换等编辑的函数,在Android系统中,图像处理函数可以是bitmap,bitmap是用于处理由像素数据定义的图像的对象,bitmap可以获取和设置图像的像素的颜色、返回图像的像素格式、获取和设置图像所使用的颜色调色板、返回图像的高度和宽度、改变图像的尺寸大小等。
钩子函数(hook函数)是一个处理消息的代码段,采用hook函数可以钩住目标函数,如果有其他函数向该目标函数发送消息时,不会先运行该目标函数,而是先运行hook函数。在hook函数的运行过程中,可以先对传递给目标函数的消息进行加工处理再传递给该目标函数,也可以直接将该消息传递给目标函数,也可以强制结束该消息的传递。在本发明实施例中,钩子函数所实现的功能可以是钩住图像处理函数,获取图像处理函数运行过程中的运行信息,如获取图像处理函数的名称、所使用的线程名称、线程开始时间、线程结束时间、栈信息、处理的图像、所使用的内存大小等,由本领域技术人员可以根据内存分析业务设置钩子函数获取图像处理函数的相关运行信息,本发明实施例对此不作限制。
具体到本发明实施例中,当检测到图像处理函数被应用程序调用后,图像处理函数向系统请求创建线程、请求内存等操作,可以在应用程序所执行的指令中插入跳转指令来控制应用程序跳转到钩子函数,通过钩子函数来获取图像处理函数的运行信息,示例性地,可以通过钩子函数来获取图像处理函数运行过程中的各种信息,如请求信息等以获得相关的运行信息,在该钩子函数获取图像处理函数的各种运行信息后可以存储到存储器中。
S102、接收所述钩子函数返回的运行信息。
在本发明实施例中,钩子函数设置有返回地址,该返回地址可以是钩子函数存储运行结果的地址,具体到本发明实施例中,可以设置分析管理器,该分析管理器的地址为钩子函数返回运行结果的地址,当钩子函数运行结束后将获取到的运行信息存储到返回地址中,分析管理器可以接收到钩子函数获取到的图像处理函数的运行信息。
S103、根据所述运行信息对所述应用程序的图像内存进行分析得到图像内存分析结果。
在接收到钩子函数返回图像处理函数的运行信息后,分析管理器可以对运行信息进行分析获得图像内存分析结果,具体地,分析管理器可以是具有内存分析业务逻辑的模块,开发人员可以设置内存分析业务逻辑,使得分析管理器可以根据内存分析业务需求对运行信息进行相应的内存分析得到图像内存分析结果。
可选地,可以对应用程序调用图像处理函数处理图像后所得到的图像进行大尺寸图像内存分析、图像内存排序、图像生命周期监测、图像尺寸是否超出图像显示窗口尺寸等分析,本领域技术人员可以根据开发测试需要设置不同的图像内存分析业务,本发明实施例对此不加以限制。
S104、控制所述应用程序跳转至所述图像处理函数。
具体地,钩子函数中可以设置有跳转到图像处理函数的指令,使得钩子函数运行结束后执行该跳转指令时跳转到图像处理函数,返回到图像处理函数,使得图像处理函数运行结束后返回到应用程序,如图像处理函数将处理得到的图像返回应用程序,在应用程序展示该图像。
本发明实施例的图像内存分析方法,应用于应用程序中分析图像内存,当检测到图像处理函数被应用程序调用时,控制应用程序跳转至预设的钩子函数,钩子函数用于获取图像处理函数的运行信息,在接收到钩子函数返回的运行信息后,根据运行信息对应用程序的图像内存进行分析得到图像内存分析结果,控制应用程序跳转至图像处理函数。本发明实施例实现了在应用程序调用图像处理函数来处理图像时跳转到钩子函数,通过钩子函数来钩取图像处理函数获取到图像处理函数的运行信息,根据该运行信息对图像处理函数的内存进行分析,能够针对性地对应用程序的图像内存进行分析,高度精细化的分析应用程序的图像内存,使得开发人员可以根据应用程序运行过程中的图像内存分析结果来优化应用程序的开发,提高应用程序的稳定性。
实施例二
图2为本发明实施例二提供的一种图像内存分析方法的步骤流程图,本发明实施例在前述实施例一的基础上进行优化,具体地,如图2所示,本发明实施例的图像内存分析方法可以包括如下步骤:
S201、当检测到图像处理函数被应用程序调用时,确定所述图像处理函数的函数地址。
本发明实施例中,钩子函数确定实际需要HOOK的内存地址作为HOOK点,具体地,该HOOK的内存地址为应用程序加载图像处理函数的内存加载地址中指定指令的地址,可以获取应用程序加载系统的动态链接库的内存加载地址以及图像处理函数在动态链接库的目标地址,根据内存加载地址和目标地址确定出图像处理函数的函数地址。
以安卓系统为示例,动态链接库可以是安卓系统中可共享的多个函数,图像处理函数为动态链接库中的一个函数,应用程序分配有指定的内存加载地址来加载动态链接库,并且图像处理函数在该内存加载地址中具有目标地址(地址偏移量),当应用程序加载动态链接库后,可以根据应用程序加载动态链接库的内存加载地址和图像处理函数的目标地址(偏移地址)确定出图像处理函数被加载到应用程序时的函数地址。
S202、将所述函数地址中预先指定的指令替换为跳转到钩子函数的跳转指令。
具体地,图像处理函数的函数地址中存储有图像处理函数的所有指令,当图像处理函数被调用后,应用程序将图像处理函数的指令加载到函数地址中,可以将函数地址中指定的指令替换为跳转到钩子函数的跳转指令,在一个示例中,预先指定的指令可以是函数地址中的第一条和第二条指令,可以将函数地址中第一条和第二条指令进行备份后,将跳转指令替换到函数地址中第一条和第二条指令的位置,在一个示例中,可以通过ARM32汇编代码对第一条和第二条指令进行备份,然后用LDR PC指令作为跳转到钩子函数的跳转指令写入原来第一条和第二条指令的位置中,当然,在实际应用中,不仅仅限于第一条和第二条指令,还可以是其他位置的指令,本发明实施例对此不加以限制。
S203、当所述图像处理函数被应用程序调用时执行所述函数地址中的指令。
应用程序在运行过程中,当图像处理函数被应用程序调用时,应用程序逐条执行加载到的图像处理函数的函数地址中的指令,在一个示例中,应用程序可以是直播、短视频等应用程序,以直播应用程序为示例,在直播应用程序中,当响应用户的操作进行图像操作时,图像处理函数被调用,图像处理函数的指令被加载到函数地址中并被逐条执行。
S204、在执行到所述跳转指令时,跳转到所述钩子函数。
由于函数地址中的预先指定的指令已被替换为跳转到钩子函数的跳转指令,当执行函数地址中的指令时,如果跳转指令被执行则跳转到钩子函数,该钩子函数可以是用户自定义的能够实现特定功能的代码,在本发明实施例中,钩子函数可以钩取图像处理函数生成的图像,获取图像处理函数的函数名称、线程名称、栈信息、图像信息等运行信息。在一个示例中,图像处理函数被调用即时向系统申请创建线程、申请内存空间、申请栈等操作,钩子函数可以获取到图像处理函数的各种操作来生成运行信息,本领域技术人员可以根据内存分析需要设置钩子函数来获取图像处理函数的不同运行信息,本发明实施例对此不加以限制。
S205、在所述跳转指令执行后,将所述预先指定的指令还原到所述函数地址中。
当跳转指令被执行后,可以将预先指定的指令还原到函数地址中,如将预先设定的指令还原到函数地址原来的地址中。在一个示例中,将第一条指令替换为跳转指令后,当跳转指令被执行后应用程序跳转到执行钩子函数,可以将第一条指令替换掉跳转指令,使得第一条指令还原到函数地址中。
S206、在所述钩子函数运行结束后,跳转至执行还原后的所述预先指定的指令以控制所述应用程序跳转至所述图像处理函数。
在本发明实施例中,钩子函数运行结束后的返回地址可以设置为指向还原后的指令所在的地址,在本发明的一个示例中,钩子函数运行结束后的返回地址可以指向第一条指令在函数地址中位置,使得应用程序执行该第一条指令以跳转到图像处理函数,并在图像处理函数运行结束后接收图像处理函数的返回结果并继续执行其他指令,如图像处理函数生成图像后将图像返回应用程序,应用程序接收图像处理函数所生成的图像,并响应展示图像的指令在显示界面展示图像。
S207、接收所述钩子函数返回的运行信息。
在本发明实施例中,钩子函数设置有返回地址,该返回地址可以是接收钩子函数的运行结果的内存地址,从而可以在内存中指定的存储区域存储钩子函数获取到的图像处理函数的运行信息,在本发明实施例中,图像处理函数的运行信息可以是图像处理函数的函数名称、线程名称、线程创建时间、线程结束时间、栈信息、图像尺寸、内存占用大小中的至少一项,当然,还可以是其他运行信息,本发明实施例对图像处理函数的运行信息不加以限制。
S208、根据所述运行信息对所述应用程序的图像内存进行分析得到图像内存分析结果。
接收到钩子函数返回的图像处理函数的运行信息后,可以将该运行信息发送到分析管理器,该分析管理器可以根据运行信息对图像处理函数的内存进行分析。
在本发明的一个示例中,可以确定出图像尺寸大于预设尺寸阈值的第一图像,并计算第一图像占用内存的比例得到大图像尺寸占用内存比例,示例性地,在应用程序运行过程中,发现有超出预设尺寸阈值的图像则确定为大尺寸图像,如图像尺寸大于2048×2048的图像确定为大尺寸图像,大尺寸图像比较占用内存,可以统计所有大尺寸图像占用内存的比例,在该比例大于设定值时进行预警。
在本发明的一个示例中,可以获取图像的显示窗口尺寸,确定图像尺寸大于该显示窗口尺寸的第二图像,示例性地,显示窗口尺寸可以是显示界面中显示图像的窗口尺寸,还可以是移动终端的显示屏幕的尺寸,当图像的尺寸大于显示窗口尺寸时,为了避免浪费可以对该图像进行裁剪或者缩放操作。
在本发明的一个示例中,还可以根据函数名称、线程名称、线程创建时间、线程结束时间对图像进行生命周期监测得到生命周期监测报告,如果图像的生命周期已经结束并且未被引用,则可以销毁该图像,如直播中生成打赏礼物界面后,用户已经退出打赏界面,打赏礼物的图像的生命周期已结束,则可以销毁该图像以避免内存泄露浪费。
在本发明的一个示例中,还可以获取每个图像的占用的内存大小,按照内存大小对图像进行降序排序得到图像占用内存排序,使得开发人员可以根据业务需要确定可以优化的内存,如可以销毁优先级低且占用内存高的图像等。
为了使本领域技术人员更清楚地理解本发明实施例的图像内存分析方法,以下结合图3对安卓系统应用程序运行过程中图像内存分析流程进行示例说明,如图3所示,本示例的图像内存分析流程如下:
S1、应用程序运行。
S2、应用程序执行原指令1调用图像处理函数CreateBitmap。
S3、跳转到钩子函数hookCreateBitmap。
具体地为,根据/proc/self/map/libandroid_runtime.so库的内存加载地址和Bitmap.createBitmap函数地址计算出钩子函数实际需要hook的寄存器,在确定应用程序调用图像处理函数CreateBitmap的寄存器后,将寄存器中2条ARM32汇编代码(8bytes)进行备份后,采用LDR PC指令作为跳转指令替换到寄存器中原指令2所在的位置,执行寄存器的跳转指令后,使用BLX命令跳转执行开发人员自定义的钩子函数hookCreateBitmap,钩子函数hookCreateBitmap获取到图像处理函数CreateBitmap的运行信息。
S4、分析管理器接收到钩子函数hookCreateBitmap返回的图像处理函数CreateBitmap的运行信息并存储。
可选地,钩子函数hookCreateBitmap获取创建的bitmap对象、创建线程名、当前栈等信息存储到分析管理器中。
S5、分析管理器对运行信息进行分析得到内存分析结果。
示例性地,分析管理器可以对应用程序调用图像处理函数处理图像后所得到的图像进行大尺寸图像内存分析、图像占用内存排序、图像生命周期监测、图像尺寸是否超出图像显示窗口尺寸等分析来生成分析结果。
S6、将原指令2还原到寄存器。
S7、执行原指令2跳转到图像处理函数CreateBitmap。
S8、从图像处理函数CreateBitmap返回执行应用程序的原指令3。
本发明实施例在检测到图像处理函数被应用程序调用时,确定所述图像处理函数的函数地址,将函数地址中预先指定的指令替换为跳转到钩子函数的跳转指令,当图像处理函数被应用程序调用时执行函数地址中的指令,在执行到跳转指令时跳转到钩子函数,钩子函数用于获取图像处理函数的运行信息,在跳转指令执行后将预先指定的指令还原到函数地址中,在钩子函数运行结束后,跳转至执行还原后的预先指定的指令以控制应用程序跳转至图像处理函数,接收钩子函数返回的运行信息,根据运行信息对应用程序的图像内存进行分析得到图像内存分析结果。本发明实施例实现了在应用程序调用图像处理函数来处理图像时执行跳转指令来跳转到钩子函数,通过钩子函数来钩取图像处理函数获取到图像处理函数的运行信息,根据该运行信息对图像处理函数的内存进行分析,一方面,能够针对性地对应用程序的图像内存进行分析,高度精细化的分析应用程序的内存,方便开发人员对应用程序进行,提高应用程序的稳定性,另一方面,不影响图像创建业务逻辑,减少了程序开发的工作量。
实施例三
图4是本发明实施例三提供的一种图像内存分析装置的结构框图,如图4所示,本发明实施例的图像内存分析装置应用于应用程序中分析图像内存,该图像内存分析装置包括:
钩子函数跳转模块401,用于当检测到图像处理函数被应用程序调用时,控制所述应用程序跳转至预设的钩子函数,所述钩子函数用于获取所述图像处理函数的运行信息;
运行信息接收模块402,用于接收所述钩子函数返回的运行信息;
内存分析模块403,用于根据所述运行信息对所述应用程序的图像内存进行分析得到图像内存分析结果;
图像处理函数跳转模块404,用于控制所述应用程序跳转至所述图像处理函数。
本发明实施例所提供的图像内存分析装置可执行本发明实施例一、实施例二所提供的图像内存分析方法,具备执行方法相应的功能模块和有益效果。
实施例四
参照图5,示出了本发明一个示例中的一种电子设备的结构示意图。如图5所示,该电子设备具体可以包括:处理器501、存储装置502、具有触摸功能的显示屏503、输入装置504、输出装置505以及通信装置506。该电子设备中处理器501的数量可以是一个或者多个,图5中以一个处理器501为例。该电子设备的处理器501、存储装置502、显示屏503、输入装置504、输出装置505以及通信装置506可以通过总线或者其他方式连接,图5中以通过总线连接为例。所述电子设备用于执行如本发明任一实施例提供的图像内存分析方法。
本发明实施例还提供一种计算机可读存储介质,所述存储介质中的指令由设备的处理器执行时,使得设备能够执行如上述方法实施例所述的图像内存分析方法。
需要说明的是,对于装置、电子设备、存储介质实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变换、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (13)
1.一种图像内存分析方法,其特征在于,应用于应用程序中分析图像内存,包括:
当检测到图像处理函数被应用程序调用时,控制所述应用程序跳转至预设的钩子函数,所述钩子函数用于获取所述图像处理函数的运行信息;
接收所述钩子函数返回的运行信息;其中,所述运行信息包括所述图像处理函数的函数名称、线程名称、线程创建时间、线程结束时间、栈信息、图像尺寸、内存占用大小中的至少一项;
根据所述运行信息对所述应用程序的图像内存进行分析得到图像内存分析结果;
控制所述应用程序跳转至所述图像处理函数。
2.根据权利要求1所述的方法,其特征在于,在控制所述应用程序跳转至预设的钩子函数之前,还包括:
当检测到图像处理函数被应用程序调用时,确定所述图像处理函数的函数地址;
将所述函数地址中预先指定的指令替换为跳转到钩子函数的跳转指令。
3.根据权利要求2所述的方法,其特征在于,所述当图像处理函数被应用程序调用时,确定所述图像处理函数的函数地址,包括:
获取所述应用程序加载系统的动态链接库的内存加载地址以及所述图像处理函数在所述动态链接库的目标地址;
根据所述内存加载地址和所述目标地址确定出所述图像处理函数的函数地址。
4.根据权利要求2所述的方法,其特征在于,所述控制所述应用程序跳转至预设的钩子函数,包括:
当所述图像处理函数被应用程序调用时执行所述函数地址中的指令;
在执行到所述跳转指令时,跳转到所述钩子函数。
5.根据权利要求2所述的方法,其特征在于,在控制所述应用程序跳转至所述图像处理函数之前,还包括:
在所述跳转指令执行后,将所述预先指定的指令还原到所述函数地址中。
6.根据权利要求5所述的方法,其特征在于,所述控制所述应用程序跳转至所述图像处理函数,包括:
在所述钩子函数运行结束后,跳转至执行还原后的所述预先指定的指令以控制所述应用程序跳转至所述图像处理函数。
7.根据权利要求1所述的方法,其特征在于,所述根据所述运行信息对所述应用程序的图像内存进行分析得到图像内存分析结果,包括:
确定出图像尺寸大于预设尺寸阈值的第一图像;
计算所述第一图像占用内存的比例得到大图像尺寸占用内存比例。
8.根据权利要求1所述的方法,其特征在于,所述根据所述运行信息对所述应用程序的图像内存进行分析得到图像内存分析结果,包括:
获取图像的显示窗口尺寸;
确定出图像尺寸大于所述显示窗口尺寸的第二图像。
9.根据权利要求1所述的方法,其特征在于,所述根据所述运行信息对所述应用程序的图像内存进行分析得到图像内存分析结果,包括:
根据函数名称、线程名称、线程创建时间、线程结束时间对图像进行生命周期监测得到生命周期监测报告。
10.根据权利要求1所述的方法,其特征在于,所述根据所述运行信息对所述应用程序的图像内存进行分析得到图像内存分析结果,包括:
获取每个图像的占用的内存大小;
按照所述内存大小对所述图像进行降序排序得到图像占用内存排序。
11.一种图像内存分析装置,其特征在于,应用于应用程序中分析图像内存,包括:
钩子函数跳转模块,用于当检测到图像处理函数被应用程序调用时,控制所述应用程序跳转至预设的钩子函数,所述钩子函数用于获取所述图像处理函数的运行信息;
运行信息接收模块,用于接收所述钩子函数返回的运行信息;其中,所述运行信息包括所述图像处理函数的函数名称、线程名称、线程创建时间、线程结束时间、栈信息、图像尺寸、内存占用大小中的至少一项;
内存分析模块,用于根据所述运行信息对所述应用程序的图像内存进行分析得到图像内存分析结果;
图像处理函数跳转模块,用于控制所述应用程序跳转至所述图像处理函数。
12.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-10任一项所述的图像内存分析方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-10任一项所述的图像内存分析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011562505.9A CN112579295B (zh) | 2020-12-25 | 2020-12-25 | 图像内存分析方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011562505.9A CN112579295B (zh) | 2020-12-25 | 2020-12-25 | 图像内存分析方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112579295A CN112579295A (zh) | 2021-03-30 |
CN112579295B true CN112579295B (zh) | 2024-05-24 |
Family
ID=75140551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011562505.9A Active CN112579295B (zh) | 2020-12-25 | 2020-12-25 | 图像内存分析方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112579295B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1605346A2 (en) * | 2004-06-11 | 2005-12-14 | Seiko Epson Corporation | Image transfer using drawing command hooking |
CN102314561A (zh) * | 2010-07-01 | 2012-01-11 | 电子科技大学 | 基于api hook的恶意代码自动分析方法和系统 |
CN103559450A (zh) * | 2013-10-11 | 2014-02-05 | 南京邮电大学 | 一种基于内核驱动钩子技术的电子标签数据保护方法 |
CN103853576A (zh) * | 2012-12-06 | 2014-06-11 | 腾讯科技(深圳)有限公司 | 一种截图方法,及装置 |
CN106897121A (zh) * | 2017-03-01 | 2017-06-27 | 四川大学 | 一种基于虚拟化技术的无代理客户机进程防护方法 |
CN106909458A (zh) * | 2015-12-23 | 2017-06-30 | 北京奇虎科技有限公司 | 内存管理方法及装置 |
CN108959070A (zh) * | 2018-06-13 | 2018-12-07 | 珠海金山网络游戏科技有限公司 | 一种基于代码对象的Python钩子函数方法和装置 |
CN109388537A (zh) * | 2018-08-31 | 2019-02-26 | 阿里巴巴集团控股有限公司 | 运行信息跟踪方法、装置及计算机可读存储介质 |
CN110059477A (zh) * | 2019-03-14 | 2019-07-26 | 成都亚信网络安全产业技术研究院有限公司 | 一种攻击检测方法及装置 |
CN110347407A (zh) * | 2019-07-16 | 2019-10-18 | 武汉斗鱼鱼乐网络科技有限公司 | 一种获取内存占用量的方法、装置、计算机设备及介质 |
CN111274155A (zh) * | 2020-02-25 | 2020-06-12 | 腾讯科技(深圳)有限公司 | 动态库的内存操作记录方法、装置、设备及存储介质 |
CN111639339A (zh) * | 2020-05-26 | 2020-09-08 | 珠海豹趣科技有限公司 | 进程监控方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100095281A1 (en) * | 2008-10-14 | 2010-04-15 | Riverside Research Institute | Internal Function Debugger |
-
2020
- 2020-12-25 CN CN202011562505.9A patent/CN112579295B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1605346A2 (en) * | 2004-06-11 | 2005-12-14 | Seiko Epson Corporation | Image transfer using drawing command hooking |
CN102314561A (zh) * | 2010-07-01 | 2012-01-11 | 电子科技大学 | 基于api hook的恶意代码自动分析方法和系统 |
CN103853576A (zh) * | 2012-12-06 | 2014-06-11 | 腾讯科技(深圳)有限公司 | 一种截图方法,及装置 |
CN103559450A (zh) * | 2013-10-11 | 2014-02-05 | 南京邮电大学 | 一种基于内核驱动钩子技术的电子标签数据保护方法 |
CN106909458A (zh) * | 2015-12-23 | 2017-06-30 | 北京奇虎科技有限公司 | 内存管理方法及装置 |
CN106897121A (zh) * | 2017-03-01 | 2017-06-27 | 四川大学 | 一种基于虚拟化技术的无代理客户机进程防护方法 |
CN108959070A (zh) * | 2018-06-13 | 2018-12-07 | 珠海金山网络游戏科技有限公司 | 一种基于代码对象的Python钩子函数方法和装置 |
CN109388537A (zh) * | 2018-08-31 | 2019-02-26 | 阿里巴巴集团控股有限公司 | 运行信息跟踪方法、装置及计算机可读存储介质 |
CN110059477A (zh) * | 2019-03-14 | 2019-07-26 | 成都亚信网络安全产业技术研究院有限公司 | 一种攻击检测方法及装置 |
CN110347407A (zh) * | 2019-07-16 | 2019-10-18 | 武汉斗鱼鱼乐网络科技有限公司 | 一种获取内存占用量的方法、装置、计算机设备及介质 |
CN111274155A (zh) * | 2020-02-25 | 2020-06-12 | 腾讯科技(深圳)有限公司 | 动态库的内存操作记录方法、装置、设备及存储介质 |
CN111639339A (zh) * | 2020-05-26 | 2020-09-08 | 珠海豹趣科技有限公司 | 进程监控方法、装置、电子设备及存储介质 |
Non-Patent Citations (4)
Title |
---|
Mohd Aizaini Maarof 2015 International Conference on Computer, Communications, and Control Technology (I4CT).2015,全文. * |
Syed Zainudeen Mohd Shaid等.In memory detection of Windows API call hooking technique.Syed Zainudeen Mohd Shaid * |
基于TCP/IP远程监控方法的研究;苏先英, 高鹏翔;青岛大学学报(自然科学版);20040425(02);全文 * |
基于嵌入式设备浏览器内存管理策略研究;黄国富;;现代电子技术;20110615(12);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112579295A (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110392305B (zh) | 视频静态画面的检测方法、终端及计算机可读存储介质 | |
CN111880991B (zh) | 内存优化方法、装置、电子设备及计算机可读存储介质 | |
CN113095995A (zh) | 网页水印添加方法、装置、电子设备及存储介质 | |
CN110990132B (zh) | 异步任务处理方法、装置、计算机设备和存储介质 | |
CN109871209A (zh) | 列表页面状态恢复方法及装置 | |
CN110471700B (zh) | 图形处理方法、装置、存储介质及电子设备 | |
CN109828926B (zh) | 一种判断应用界面是否加载异常的方法和装置 | |
CN112181760A (zh) | 一种异常检测方法及装置 | |
CN115955557A (zh) | 卡顿分析方法及其装置 | |
CN111223155A (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
CN112579295B (zh) | 图像内存分析方法、装置、电子设备和存储介质 | |
CN113688343A (zh) | 一种页面权限控制方法、装置、设备及可读存储介质 | |
CN117421242A (zh) | 应用检测方法、装置、计算机设备和计算机可读存储介质 | |
CN112613275A (zh) | 单据生成方法、装置、计算机设备和存储介质 | |
CN114816389B (zh) | 一种基于元模型的管理系统搭建方法、装置、设备及介质 | |
CN115630241A (zh) | 页面显示方法、装置、电子设备及存储介质 | |
CN115952491A (zh) | hook目标函数的方法、装置、电子设备及介质 | |
CN106708605B (zh) | 一种检测资源泄漏的方法及装置 | |
CN114913649A (zh) | 显示状态监控方法、装置、设备及计算机可读存储介质 | |
CN109739598B (zh) | 一种终端亮屏方法及装置、设备和存储介质 | |
CN115904928A (zh) | 一种慢函数监控的插桩方法、装置、设备及存储介质 | |
CN108961380B (zh) | 图形渲染方法及装置 | |
CN111708519A (zh) | 一种业务组件的处理方法、装置、设备和存储介质 | |
CN116560958B (zh) | 判断事件发生位置的实现方法、装置、终端及存储介质 | |
CN109783329B (zh) | 应用程序空白数据提示方法、系统及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |