CN105373471B - 用于内存泄露漏洞的检测方法和装置 - Google Patents
用于内存泄露漏洞的检测方法和装置 Download PDFInfo
- Publication number
- CN105373471B CN105373471B CN201410438013.7A CN201410438013A CN105373471B CN 105373471 B CN105373471 B CN 105373471B CN 201410438013 A CN201410438013 A CN 201410438013A CN 105373471 B CN105373471 B CN 105373471B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- pixel
- picture
- attribute data
- 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
Landscapes
- Controls And Circuits For Display Device (AREA)
Abstract
本发明公开了一种用于内存泄露漏洞的检测方法和装置。其中,该方法包括:获取内存数据中当前选定的内存对象记录,其中,内存数据为使用终端上应用程序时产生的数据,内存数据中包括一条或多条内存对象记录;在预定展示区域绘制当前选定的内存对象记录所指示的对象图片;判断对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,得到判断结果;使用判断结果确定应用程序是否存在内存泄露漏洞。通过本发明实施例,解决了现有技术中通过查询图片对象的代码逻辑检测内存泄露漏洞,检测准确性低的问题,实现了准确检测因图片产生的内存泄露漏洞的效果。
Description
技术领域
本发明涉及漏洞检测领域,具体而言,涉及一种用于内存泄露漏洞的检测方法和装置。
背景技术
现有技术中,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元,会发生内存泄露。
例如,在移动终端上某个应用程序不停地申请内存,如请求查看图片A,但是一直都没有反馈,内存耗完,该应用程序会发生异常,这就是内存泄露的场景。
在现有技术中可以通过内存泄露检测工具检测内存泄露。具体地,Android产品的内存测试分为java层与native层(原生层),java层分析以抓取Android某个运行态下的内存镜像,通过静态分析方式来执行,但是现有分析工具MAT(Memory Analyzer)无法展示内存镜像中存放的图片,无法判定内存镜像中的图片是否和当前操作吻合。其中,正常情况下内存镜像中的图片和当前操作界面或逻辑相吻合,如果内存镜像中的图片和当前操作不吻合很可能是发生了程序bug。如果无法判定内存镜像中的图片是否和当前操作吻合,则无法确定程序是否发生bug。
现有技术中判断内存镜像中的图片和当前操作界面或逻辑是否相吻合,如图1所示,在检测过程中,分析工作窗口中获取的内存数据的内存对象记录10’中仅仅会显示图片的名称和图片的宽高(图中未示出),然后可以通过获取到的宽高和文件名到后台查找代码逻辑,使用超找到的代码逻辑判断此处是否存在内存泄露,使用这种方式处理流程长,操作复杂,成本高;且由于处理流程长判断结果准确性低。
针对上述的通过查询图片对象的代码逻辑检测内存泄露漏洞,检测准确性低的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种用于内存泄露漏洞的检测方法和装置,以至少解决通过查询图片对象的代码逻辑检测内存泄露漏洞,检测准确性低的技术问题。
根据本发明实施例的一个方面,提供了一种用于内存泄露漏洞的检测方法,该检测方法包括:获取内存数据中当前选定的内存对象记录,其中,内存数据为使用终端上应用程序时产生的数据,内存数据中包括一条或多条内存对象记录;在预定展示区域绘制当前选定的内存对象记录所指示的对象图片;判断对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,得到判断结果;使用判断结果确定应用程序是否存在内存泄露漏洞。
根据本发明实施例的另一方面,还提供了一种用于内存泄露漏洞的检测装置,该检测装置包括:获取模块,用于获取内存数据中当前选定的内存对象记录,其中,内存数据为使用终端上应用程序时产生的数据,内存数据中包括一条或多条内存对象记录;绘制模块,用于在预定展示区域绘制当前选定的内存对象记录所指示的对象图片;第一判断模块,用于判断对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,得到判断结果;第一确定模块,用于使用判断结果确定应用程序是否存在内存泄露漏洞。
通过本发明实施例,在获取内存数据中当前选定的内存对象记录之后,在预定展示区域绘制当前选定的内存对象记录所指示的对象图片,然后通过对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,确定应用程序是否存在内存泄露漏洞。在上述实施例中,通过预定展示区域中展示的图片,可以直观准确判断应用程序是否存在内存泄露漏洞,从而解决了现有技术中通过查询图片对象的代码逻辑检测内存泄露漏洞,检测准确性低的问题,实现了准确检测因图片产生的内存泄露漏洞的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据现有技术的一种检测方法的示意图;
图2是根据本发明实施例的用于内存泄露漏洞的检测方法的环境示意图;
图3是根据本发明实施例的用于内存泄露漏洞的检测方法的流程图;
图4是根据本发明实施例的预定展示区域的示意图;
图5是根据本发明实施例的一种绘制内存对象记录所指示的图片的方法;
图6是根据本发明实施例的一种可选的获取内存对象记录的流程图;
图7是根据本发明实施例的获取位图对象的像素属性数据和尺寸属性数据的流程图;
图8是根据本发明实施例的用于内存泄露漏洞的检测装置的示意图;以及
图9是根据本发明实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种用于内存泄露漏洞的检测方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
可选地,在本实施例中,上述图片的传输方法可以应用于如图2所示的第一终端101所构成的硬件环境中。如图2所示,第一终端可以通过网络或数据线与第二终端102连接,向第二终端102上传或下载数据。
上述网络包括但不限于:广域网、城域网或局域网。在本发明实施例中,上述的终端可以为移动终端、个人电脑,具体地,移动终端和个人电脑可以为智能手机、平板电脑、PDA等。
根据本发明实施例,提供了一种用于内存泄露漏洞的检测方法,如图3所示,该方法可以包括如下步骤:
步骤S302:获取内存数据中当前选定的内存对象记录,其中,内存数据为终端的内存记录的使用终端上应用程序时产生的数据,内存数据中包括一条或多条内存对象记录。
步骤S304:在预定展示区域绘制当前选定的内存对象记录所指示的对象图片。
步骤S306:判断对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,得到判断结果。
步骤S308:使用判断结果确定应用程序是否存在内存泄露漏洞。
通过本发明实施例,在获取内存数据中当前选定的内存对象记录之后,在预定展示区域绘制当前选定的内存对象记录所指示的对象图片,然后通过对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,确定应用程序是否存在内存泄露漏洞。在上述实施例中,通过预定展示区域中展示的图片,可以直观准确判断应用程序是否存在内存泄露漏洞,从而解决了现有技术中通过查询图片对象的代码逻辑检测内存泄露漏洞,检测准确性低的问题,实现了准确检测因图片产生的内存泄露漏洞的效果。
其中,上述实施例中的步骤S306:判断对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,得到判断结果,可以通过如下方法实现:
获取对象图片的第一图片信息,并获取终端缓存的缓存图片的第二图片信息和应用程序的当前界面显示的图片的第三图片信息,通过比较第一图片信息和第二图片信息判断对象图片是否存在于终端的缓存中;以及通过比较第一图片信息和第三图片信息判断对象图片是否为应用程序的当前界面显示的图片。
具体地,若存在与第一图片信息一致的第二图片信息,则确定对象图片存在于终端的缓存中;若不存在与第一图片信息一致的第二图片信息,则确定对象图片不存在于终端的缓存中。若第三图片信息与第一图片信息一致,则确定对象图片为应用程序的当前界面显示的图片;若第三图片信息与第一图片信息不一致,则确定对象图片不为应用程序的当前界面显示的图片。
如图4所示的内存对象记录10和预定绘制区域30。
本发明的上述实施例中,在预定展示区域绘制当前选定的内存对象记录所指示的对象图片可以包括:根据当前选定的内存对象记录的内存对象ID获取内存对象的对象属性数据;在通过对象属性数据确定内存对象为位图对象的情况下,从终端的内存中读取位图对象的像素属性数据和尺寸属性数据;基于位图对象的像素属性数据和尺寸属性数据生成位图对象的图像对象;将图像对象绘制在预定展示区域,以展示对象图片。
具体地,基于位图对象的像素属性数据和尺寸属性数据生成位图对象的图像对象可以包括:对像素属性数据和尺寸属性数据进行像素解码,得到像素解析数组;获取像素解析数组中各个元素的像素颜色,其中,像素解析数组中每个元素代表位图对象中的一个像素;基于各个元素的像素颜色和尺寸属性数据生成位图对象的图像对象。
在本发明一个可选的实施例中,对像素属性数据和尺寸属性数据进行像素解码,得到像素解析数组可以包括:根据尺寸属性数据的高度和尺寸属性数据的宽度生成原始像素矩阵,其中,尺寸属性数据的高度值为N,尺寸属性数据的宽度值为M,原始像素矩阵为N行M列的矩阵或为N列M行的矩阵,尺寸属性数据的高度和尺寸属性数据的宽度以像素为单位;从像素属性数据中获取原始像素矩阵中各个元素的颜色通道数据,其中,颜色通道数据包括透明度通道数据、红色通道数据、绿色通道数据和蓝色通道数据;将各个元素的颜色通道数据保存入原始像素矩阵的元素中,得到像素解析数组。
需要进一步说明的是,获取像素解析数组中各个元素的像素颜色可以包括:依次在颜色表中检索像素解析数组中各个元素的像素颜色。
下面结合附图5详细介绍本发明。如图5所示,本发明的上述实施例可以通过如下步骤实现:
步骤S501:使用预设的图片配色信息对位图对象的像素属性数据和尺寸属性数据进行解码处理得到像素解析数组。
具体地,得到了待分析图片对象的像素缓冲、高、宽参数后,就可以按照用户选择的配色方案(即上述实施例中的预设的图片配色信息,如ARGB8888、RGB565或ARGB4444)来进行解码了。
下面以预设的图片配色信息为ARGB8888配色方案为应用场景,详细介绍本发明:
获取到的位图图片的尺寸属性数据中的宽高是400*400,那么就有160000个32位(bit)像素缓冲。其中,32位像素缓冲是因为Android对ARGB8888的定义为Alpha通道8bit,Red通道8bit,Green通道8bit,Blue通道8bit,四个8bit相加就是32bit了;然后把获取到的图片的像素缓冲按照32位一节的单位,逐个分出Alpha,Red,Green,Blue四个颜色通道数据;建立一个int32型变量,用位移操作,将blue(即上述实施例中的蓝色通道数据)放置到变量的低8位,Green(即上述实施例中的绿色通道数据)放置到变量的8-16位,Red(即上述实施例中的红色通道数据)放置到变量的16-32位,Alpha(即上述实施例中的透明度通道数据)放置到变量的高八位,这样就完成了一个像素点的颜色初步解析,得到一个int32型的像素解析数组int[160000]。
步骤S502:获取像素解析数组中各个元素的像素颜色,得到像素颜色集合。
上述步骤中得到的像素解析数据中每个元素为对应像素的调色板取色序列号,可以通过该元素数据来获取颜色表中对应的颜色,得到像素颜色集合。
其中,上述实施例中的像素颜色为用于屏幕显示的原始像素颜色,这里使用的颜色表(如设备调色板)可以为“直接颜色模型”。
步骤S503:使用像素颜色和尺寸属性数据生成位图对象的图片数据,通过该图片数据的构造函数得到图像对象。
具体地,使用调色板逐个检索出像素解析矩阵中的像素颜色后,生成每像素用4个int32描述的数据组,将像素颜色和图片的高宽一起构造一个图像数据ImageData,并通过图片数据ImageData的构造函数来最终得到一个图像对象(Image对象)。
步骤S504:将图像对象绘制到预定展示区域。
将这个Image对象绘制到如图4所示的Gavans控件上,即可显示出当前选定的被分析的图像对象(即上述实施例中的对象图片)。
在本发明的上述实施例中,获取内存数据中当前选定的内存对象记录可以包括:创建数据监听接口;调用数据监听接口监听工作窗口中的当前选定的内存对象记录,其中,工作窗口中显示有内存数据。
具体地,调用数据监听接口监听工作窗口中的当前选定的内存对象记录可以包括:通过数据监听接口监听在工作窗口中发生的当前选择事件;从当前选择事件中提取内存对象ID;获取内存对象ID所指示的当前选定的内存对象记录。
如图6所示,本发明的上述实施例可以通过如下步骤实现:
步骤S601:创建集成开发环境标准窗口类。
在该实施例中创建eclipse(即集成开发环境)标准窗口类(SWT--StandardWidget Toolkit)。
具体地,在该标准窗口类中可以包括一个Combo和一个Canvas,通过Combo可以获取预设的图片配置信息(即用户选定的配色方案),如,用户可以选择ARGB8888、ARGB4444或RGB565的配色方案。通过Canvas可以用于绘制的图片(在该实施例中的Canvas即为上述实施例中的预定展示区域)。
步骤S602:建立被激活接口。
通过建立被激活接口(即上述实施例中的数据监听接口)创建数据监听事件,其中,该被激活接口可以为监听选择接口。
具体地,通过被激活接口partActivited获取内存泄露漏洞分析软件的当前工作台窗口切换。
步骤S603:获取内存泄露漏洞分析软件的当前工作台窗口。
步骤S604:判断当前工作台窗口是否为内存分析窗口。
其中,如果当前工作台窗口为内存分析窗口,则执行步骤S605。如果当前工作台窗口不为内存分析窗口,返回执行步骤S602。其中的内存分析窗口为上述实施例中的工作窗口。
具体地,可以通过传入参数来确定当前工作窗口是否为HeapEditor内存分析窗口。如果是HeapEditor,就调用addSelectionChangedListener来增加对用户在HeapEditor中选择操作的监听,这样就可以知道用户选择的是窗口中的哪一行对象记录。
其中,上述实施例中的传入参数即为工作窗口的描述信息,如工作窗口的坐标信息。
步骤S605:获取用户的当前选择事件。
通过上述步骤完成SWT控件的初始化流程后,就可以在监听选择接口中获得用户选择事件(Selection Changed Event),并通过其获取第一个元素get First Element的方法获得当前选定的内存对象记录。
在本发明的上述实施例中,根据当前选定的内存对象记录的内存对象ID获取内存对象的对象属性数据可以包括:从终端的内存中读取内存对象ID所指向的内存对象的对象名称,其中,对象属性数据包括内存对象的对象名称。
进一步地,在从终端的内存中读取内存对象ID指向的内存对象的对象名称之后,检测方法还可以包括:判断对象名称是否为预设位图对象名称;若对象名称为预设位图对象名称,则确认内存对象为位图对象;若对象名称不为预设位图对象名称,则确认内存对象不为位图对象。
在获取当前选定的内存对象记录之后,可以通过图7所示的步骤获取当前选定的内存对象记录的像素属性数据和尺寸属性数据。具体地可以通过如下步骤实现:
步骤S701:将通过监听选择接口获取到的当前选择事件转换成内存对象行ID。
具体地,获取当前选择事件中的选择上下文信息,从选择上下文信息中获取对象数据集合,从对象数据集合提取内存对象ID。
步骤S702:判断监听到的内存对象是否为位图对象。
其中,若监听到的内存对象为位图对象,则执行步骤S703。若监听到的内存对象不为位图对象,则执行步骤S705。
具体地,如果内存对象的对象名称为:android.graphics.Bitmap,就确定该内存对象是一个位图对象;如果内存对象的对象名称不为:android.graphics.Bitmap,则确定该内存对象不是位图对象。
步骤S703:获取位图对象的像素属性数据。
具体地,获取位图对象的mBuffer字段内容,在该字段中存储了这个图片的像素缓存(即上述实施例中的像素属性数据),其中,像素缓存可以包括该图片的像素点的绿色通道数据、红色通道数据、蓝色通道数据和透明度通道数据。
步骤S704:获取位图对象的尺寸属性数据。
具体地,获取该图片的高(mWidth字段)和宽(mHeight字段)。
步骤S705:获取下一个选择事件。
需要进一步说明的是,判断对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,得到判断结果可以包括:在对象图片不存在于终端的缓存中且对象图片为应用程序的当前界面显示的图片时,得到第一判断子结果;否则,得到第二判断子结果;使用判断结果确定应用程序是否存在内存泄露漏洞可以包括:在得到第一判断子结果时,确定应用程序不存在内存泄露漏洞;在得到第二判断子结果时,确定应用程序存在内存泄露漏洞。
通过本发明上述实施例,在建立数据监听接口之后,获取用户的当前选择事件,从当前选择事件中提取当前选定的内存对象ID,通过内存对象ID获取当前选定的内存对象记录的内存对象的对象属性数据。在对象属性数据中的对象名称符合预设位图对象名称时,确定该内存对象为位图对象,获取该内存对象的像素属性数据和尺寸属性数据,基于像素属性数据和尺寸属性数据在预定展示区域绘制内存对象记录的图片,使用该预定展示区域绘制的图片判断应用程序是否存在内存泄露漏洞。
在上述实施例中通过在使用该预定展示区域绘制的图片判断应用程序是否存在内存泄露漏洞,不仅可以直观地查看图片内容,使得内存图片测试很容易;进一步地,可以大幅提高andriod内存分析中对于图片分析的准确度,并且简化了检测流程,降低了分析成本。
下面以QQ空间为应用场景详细介绍本发明。
例如,用户A在用户B的QQ空间中相册中的图片P进行点赞操作,该图片P会显示用户B的相册中,而且会显示在用户B的相册下面的评论中,然而在终端的内存中仅仅存在一张即可。通过网络获取用户A的终端的内存数据,并在内存分析软件上,在建立数据监听接口之后,获取用户的当前选择事件,从当前选择事件中提取当前选定的内存对象ID,通过内存对象ID获取当前选定的内存对象记录的属性数据,假如该内存对象为图片P的内存对象,在个人电脑的预定展示区域绘制该图片P之后,检测用户A的终端的缓存中是否存在该图片,如果存在,则确定该处发生了内存泄露漏洞。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述用于内存泄露漏洞的检测装置,如图8所示,该装置可以包括:获取模块50、绘制模块70、第一判断模块90以及第一确定模块80。
其中,获取模块,用于获取内存数据中当前选定的内存对象记录,其中,内存数据为终端的内存记录的使用终端上应用程序时产生的数据,内存数据中包括一条或多条内存对象记录;绘制模块,用于在预定展示区域绘制当前选定的内存对象记录所指示的对象图片;第一判断模块,用于判断对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,得到判断结果;第一确定模块,用于使用判断结果确定应用程序是否存在内存泄露漏洞。
通过本发明实施例,在获取内存数据中当前选定的内存对象记录之后,在预定展示区域绘制当前选定的内存对象记录所指示的对象图片,然后通过对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,确定应用程序是否存在内存泄露漏洞。在上述实施例中,通过预定展示区域中展示的图片,可以直观准确判断应用程序是否存在内存泄露漏洞,从而解决了现有技术中通过查询图片对象的代码逻辑检测内存泄露漏洞,检测准确性低的问题,实现了准确检测因图片产生的内存泄露漏洞的效果。
判断对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,得到判断结果,可以通过如下方法实现:
获取对象图片的第一图片信息,并获取终端缓存的缓存图片的第二图片信息和应用程序的当前界面显示的图片的第三图片信息,通过比较第一图片信息和第二图片信息判断对象图片是否存在于终端的缓存中;以及通过比较第一图片信息和第三图片信息判断对象图片是否为应用程序的当前界面显示的图片。
具体地,若存在与第一图片信息一致的第二图片信息,则确定对象图片存在于终端的缓存中;若不存在与第一图片信息一致的第二图片信息,则确定对象图片不存在于终端的缓存中。若第三图片信息与第一图片信息一致,则确定对象图片为应用程序的当前界面显示的图片;若第三图片信息与第一图片信息不一致,则确定对象图片不为应用程序的当前界面显示的图片。
本发明的上述实施例中,绘制模块可以包括:第一获取子模块,用于根据当前选定的内存对象记录的内存对象ID获取内存对象的对象属性数据;第一读取子模块,用于在通过对象属性数据确定内存对象为位图对象的情况下,从终端的内存中读取位图对象的像素属性数据和尺寸属性数据;生成模块,用于基于位图对象的像素属性数据和尺寸属性数据生成位图对象的图像对象;绘制子模块,用于将图像对象绘制在预定展示区域,以展示对象图片。
具体地,生成模块可以包括:解码模块,用于对像素属性数据和尺寸属性数据进行像素解码,得到像素解析数组;第二获取子模块,用于获取像素解析数组中各个元素的像素颜色,其中,像素解析数组中每个元素代表位图对象中的一个像素;第一生成子模块,用于基于各个元素的像素颜色和尺寸属性数据生成位图对象的图像对象。
在本发明一个可选的实施例中,解码模块可以包括:第二生成子模块,用于根据尺寸属性数据的高度和尺寸属性数据的宽度生成原始像素矩阵,其中,尺寸属性数据的高度值为N,尺寸属性数据的宽度值为M,原始像素矩阵为N行M列的矩阵或为N列M行的矩阵,尺寸属性数据的高度和尺寸属性数据的宽度以像素为单位;第三获取子模块,用于从像素属性数据中获取原始像素矩阵中各个元素的颜色通道数据,其中,颜色通道数据包括透明度通道数据、红色通道数据、绿色通道数据和蓝色通道数据;保存模块,用于将各个元素的颜色通道数据保存入原始像素矩阵的元素中,得到像素解析数组。
需要进一步说明的是,,第二获取子模块可以包括:检索模块,用于依次在颜色表中检索像素解析数组中各个元素的像素颜色。
根据本发明的上述实施例,得到了待分析图片对象的像素缓冲、高、宽参数后,就可以按照用户选择的配色方案(即上述实施例中的预设的图片配色信息,如ARGB8888、RGB565或ARGB4444)来进行解码了。
下面以预设的图片配色信息为ARGB8888配色方案为应用场景,详细介绍本发明:
获取到的位图图片的尺寸属性数据中的宽高是400*400,那么就有160000个32位(bit)像素缓冲。其中,32位像素缓冲是因为Android对ARGB8888的定义为Alpha通道8bit,Red通道8bit,Green通道8bit,Blue通道8bit,四个8bit相加就是32bit了;然后把获取到的图片的像素缓冲按照32位一节的单位,逐个分出Alpha,Red,Green,Blue四个颜色通道数据;建立一个int32型变量,用位移操作,将blue(即上述实施例中的蓝色通道数据)放置到变量的低8位,Green(即上述实施例中的绿色通道数据)放置到变量的8-16位,Red(即上述实施例中的红色通道数据)放置到变量的16-32位,Alpha(即上述实施例中的透明度通道数据)放置到变量的高八位,这样就完成了一个像素点的颜色初步解析,得到一个int32型的像素解析数组int[160000]。
其中,上述实施例中的像素颜色为用于屏幕显示的原始像素颜色,这里使用的颜色表(如设备调色板)可以为“直接颜色模型”。
具体地,使用调色板逐个检索出像素解析矩阵中的像素颜色后,生成每像素用4个int32描述的数据组,将像素颜色和图片的高宽一起构造一个图像数据ImageData,并通过图片数据ImageData的构造函数来最终得到一个图像对象(Image对象)。
在本发明的上述实施例中,获取模块可以包括:创建模块,用于创建数据监听接口;调用模块,用于调用数据监听接口监听工作窗口中的当前选定的内存对象记录,其中,工作窗口中显示有内存数据。
具体地,调用模块可以包括:监听模块,用于通过数据监听接口监听在工作窗口中发生的当前选择事件;提取模块,用于从当前选择事件中提取内存对象ID;第四获取子模块,用于获取内存对象ID所指示的当前选定的内存对象记录。
在该实施例中创建eclipse(即集成开发环境)标准窗口类(SWT--StandardWidget Toolkit)。
具体地,在该标准窗口类中可以包括一个Combo和一个Canvas,通过Combo可以获取预设的图片配置信息(即用户选定的配色方案),如,用户可以选择ARGB8888、ARGB4444或RGB565的配色方案。通过Canvas可以用于绘制的图片(在该实施例中的Canvas即为上述实施例中的预定展示区域)。
然后,通过建立被激活接口(即上述实施例中的数据监听接口)创建数据监听事件,其中,该被激活接口可以为监听选择接口。通过被激活接口partActivited获取内存泄露漏洞分析软件的当前工作台窗口切换。
如果当前工作台窗口为内存分析窗口,则执行步骤S605。如果当前工作台窗口不为内存分析窗口,返回执行步骤S602。其中的内存分析窗口为上述实施例中的工作窗口。
具体地,可以通过传入参数来确定当前工作窗口是否为HeapEditor内存分析窗口。如果是HeapEditor,就调用addSelectionChangedListener来增加对用户在HeapEditor中选择操作的监听,这样就可以知道用户选择的是窗口中的哪一行对象记录。
其中,上述实施例中的传入参数即为工作窗口的描述信息,如工作窗口的坐标信息。
在本发明的上述实施例中,第一获取子模块可以包括:第二读取子模块,用于从终端的内存中读取内存对象ID所指向的内存对象的对象名称,其中,对象属性数据包括内存对象的对象名称;检测装置还可以包括:第二判断模块,用于在从终端的内存中读取内存对象ID指向的内存对象的对象名称之后,判断对象名称是否为预设位图对象名称;第二确定模块,用于若对象名称为预设位图对象名称,则确认内存对象为位图对象;第三确定模块,用于若对象名称不为预设位图对象名称,则确认内存对象不为位图对象。
具体地,如果内存对象的对象名称为:android.graphics.Bitmap,就确定该内存对象是一个位图对象;如果内存对象的对象名称不为:android.graphics.Bitmap,则确定该内存对象不是位图对象。
需要进一步说明的是,第一判断模块包括:第一判断子模块,用于在对象图片不存在于终端的缓存中且对象图片为应用程序的当前界面显示的图片时,得到第一判断子结果;否则,得到第二判断子结果。
具体地,第一确定模块可以包括:第一确定子模块,用于在得到第一判断子结果时,确定应用程序不存在内存泄露漏洞;第二确定子模块,用于在得到第二判断子结果时,确定应用程序存在内存泄露漏洞。
通过本发明上述实施例,在建立数据监听接口之后,获取用户的当前选择事件,从当前选择事件中提取当前选定的内存对象ID,通过内存对象ID获取当前选定的内存对象记录的内存对象的对象属性数据。在对象属性数据中的对象名称符合预设位图对象名称时,确定该内存对象为位图对象,获取该内存对象的像素属性数据和尺寸属性数据,基于像素属性数据和尺寸属性数据在预定展示区域绘制内存对象记录的图片,使用该预定展示区域绘制的图片判断应用程序是否存在内存泄露漏洞。
在上述实施例中通过在使用该预定展示区域绘制的图片判断应用程序是否存在内存泄露漏洞,不仅可以直观地查看图片内容,使得内存图片测试很容易;进一步地,可以大幅提高andriod内存分析中对于图片分析的准确度,并且简化了检测流程,降低了分析成本。
本实施例中所提供的各个模块与方法实施例对应步骤所提供的使用方法相同、应用场景也可以相同。当然,需要注意的是,上述模块涉及的方案可以不限于上述实施例一中的内容和场景,且上述模块可以运行在计算机终端或移动终端,可以通过软件或硬件实现。
实施例3
本发明的实施例还提供了一种终端或服务器。可选地,在本实施例中,上述终端可以执行用于内存泄露漏洞的检测方法,上述实施例中的用于内存泄露漏洞的检测装置可以设置在该终端或服务器上。
图9是根据本发明实施例的一种终端的结构框图。如图9所示,该终端200可以包括:一个或多个(图中仅示出一个)处理器201、存储器203、以及传输装置205,如图9所示,该终端还可以包括输入输出设备207和天线209。
其中,存储器203可用于存储软件程序以及模块,如本发明实施例中的用于内存泄露漏洞的检测方法和装置对应的程序指令/模块,处理器201通过运行存储在存储203内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的用于内存泄露漏洞的检测方法。存储器203可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器203可进一步包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至终端200。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置205用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置205包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置205为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器203用于存储应用程序。
处理器201可以通过传输装置205调用存储器203存储的应用程序,以执行下述步骤:获取内存数据中当前选定的内存对象记录,其中,内存数据为终端的内存记录的使用终端上应用程序时产生的数据,内存数据中包括一条或多条内存对象记录;在预定展示区域绘制当前选定的内存对象记录所指示的对象图片;判断对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,得到判断结果;使用判断结果确定应用程序是否存在内存泄露漏洞。
采用本发明实施例,在获取内存数据中当前选定的内存对象记录之后,在预定展示区域绘制当前选定的内存对象记录所指示的对象图片,然后通过对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,确定应用程序是否存在内存泄露漏洞。在上述实施例中,通过预定展示区域中展示的图片,可以直观准确判断应用程序是否存在内存泄露漏洞,从而解决了现有技术中通过查询图片对象的代码逻辑检测内存泄露漏洞,检测准确性低的问题,实现了准确检测因图片产生的内存泄露漏洞的效果。
在本发明的上述实施例中,处理器还用于执行下述操作:根据当前选定的内存对象记录的内存对象ID获取内存对象的对象属性数据;在通过对象属性数据确定内存对象为位图对象的情况下,从终端的内存中读取位图对象的像素属性数据和尺寸属性数据;基于位图对象的像素属性数据和尺寸属性数据生成位图对象的图像对象;将图像对象绘制在预定展示区域,以展示对象图片。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
需要进一步说明的是,寄存区域为系统的内存和系统处理器中的寄存器。
本领域普通技术人员可以理解,图9所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图9其并不对上述电子装置的结构造成限定。例如,终端200还可包括比图9中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图9所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例4
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于内存泄露漏洞的检测方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于实施例3所示的终端上。
可选地,在本实施例中,上述存储介质可以位于网络中的多个网络设备中的一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
步骤S1:获取内存数据中当前选定的内存对象记录,其中,内存数据为终端的内存记录的使用终端上应用程序时产生的数据,内存数据中包括一条或多条内存对象记录。
步骤S2:在预定展示区域绘制当前选定的内存对象记录所指示的对象图片。
步骤S3:判断对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,得到判断结果。
步骤S4:使用判断结果确定应用程序是否存在内存泄露漏洞。
通过本发明实施例,在获取内存数据中当前选定的内存对象记录之后,在预定展示区域绘制当前选定的内存对象记录所指示的对象图片,然后通过对象图片是否存在于终端的缓存中,或者对象图片是否为应用程序的当前界面显示的图片,确定应用程序是否存在内存泄露漏洞。在上述实施例中,通过预定展示区域中展示的图片,可以直观准确判断应用程序是否存在内存泄露漏洞,从而解决了现有技术中通过查询图片对象的代码逻辑检测内存泄露漏洞,检测准确性低的问题,实现了准确检测因图片产生的内存泄露漏洞的效果。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取对象图片的第一图片信息,并获取终端缓存的缓存图片的第二图片信息和应用程序的当前界面显示的图片的第三图片信息,通过比较第一图片信息和第二图片信息判断对象图片是否存在于终端的缓存中;以及通过比较第一图片信息和第三图片信息判断对象图片是否为应用程序的当前界面显示的图片。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (16)
1.一种用于内存泄露漏洞的检测方法,其特征在于,包括:
获取内存数据中当前选定的内存对象记录,其中,所述内存数据为使用终端上应用程序时产生的数据,所述内存数据中包括一条或多条所述内存对象记录;
在预定展示区域绘制所述当前选定的内存对象记录所指示的对象图片;
在所述对象图片不存在于所述终端的缓存中且所述对象图片为所述应用程序的当前界面显示的图片时,得到第一判断子结果;否则,得到第二判断子结果;
在得到所述第一判断子结果时,确定所述应用程序不存在所述内存泄露漏洞;在得到所述第二判断子结果时,确定所述应用程序存在所述内存泄露漏洞。
2.根据权利要求1所述的检测方法,其特征在于,在预定展示区域绘制所述当前选定的内存对象记录所指示的对象图片包括:
根据所述当前选定的内存对象记录的内存对象ID获取内存对象的对象属性数据;
在通过所述对象属性数据确定所述内存对象为位图对象的情况下,从所述终端的内存中读取所述位图对象的像素属性数据和尺寸属性数据;
基于所述位图对象的像素属性数据和所述尺寸属性数据生成所述位图对象的图像对象;
将所述图像对象绘制在预定展示区域,以展示所述对象图片。
3.根据权利要求2所述的检测方法,其特征在于,基于所述位图对象的像素属性数据和所述尺寸属性数据生成所述位图对象的图像对象包括:
对所述像素属性数据和所述尺寸属性数据进行像素解码,得到像素解析数组;
获取所述像素解析数组中各个元素的像素颜色,其中,所述像素解析数组中每个元素代表所述位图对象中的一个像素;
基于所述各个元素的像素颜色和所述尺寸属性数据生成所述位图对象的所述图像对象。
4.根据权利要求3所述的检测方法,其特征在于,对所述像素属性数据和所述尺寸属性数据进行像素解码,得到像素解析数组包括:
根据所述尺寸属性数据的高度和所述尺寸属性数据的宽度生成原始像素矩阵,其中,所述尺寸属性数据的高度值为N,所述尺寸属性数据的宽度值为M,所述原始像素矩阵为N行M列的矩阵或为N列M行的矩阵,所述尺寸属性数据的高度和所述尺寸属性数据的宽度以像素为单位;
从所述像素属性数据中获取所述原始像素矩阵中各个元素的颜色通道数据,其中,所述颜色通道数据包括透明度通道数据、红色通道数据、绿色通道数据和蓝色通道数据;
将各个所述元素的颜色通道数据保存入所述原始像素矩阵的所述元素中,得到所述像素解析数组。
5.根据权利要求3所述的检测方法,其特征在于,获取所述像素解析数组中各个元素的像素颜色包括:
依次在颜色表中检索所述像素解析数组中各个元素的所述像素颜色。
6.根据权利要求1所述的检测方法,其特征在于,获取内存数据中当前选定的内存对象记录包括:
创建数据监听接口;
调用所述数据监听接口监听工作窗口中的所述当前选定的内存对象记录,其中,所述工作窗口中显示有所述内存数据。
7.根据权利要求6所述的检测方法,其特征在于,调用所述数据监听接口监听工作窗口中的所述当前选定的内存对象记录包括:
通过所述数据监听接口监听在所述工作窗口中发生的当前选择事件;
从所述当前选择事件中提取内存对象ID;
获取所述内存对象ID所指示的所述当前选定的内存对象记录。
8.根据权利要求2至5中任意一项所述的检测方法,其特征在于,
根据所述当前选定的内存对象记录的内存对象ID获取内存对象的对象属性数据包括:从所述终端的所述内存中读取所述内存对象ID所指向的所述内存对象的对象名称,其中,所述对象属性数据包括所述内存对象的所述对象名称;
在从所述终端的内存中读取所述内存对象ID指向的所述内存对象的对象名称之后,所述检测方法还包括:
判断所述对象名称是否为预设位图对象名称;
若所述对象名称为所述预设位图对象名称,则确认所述内存对象为所述位图对象;
若所述对象名称不为所述预设位图对象名称,则确认所述内存对象不为所述位图对象。
9.一种用于内存泄露漏洞的检测装置,其特征在于,包括:
获取模块,用于获取内存数据中当前选定的内存对象记录,其中,所述内存数据为使用终端上应用程序时产生的数据,所述内存数据中包括一条或多条所述内存对象记录;
绘制模块,用于在预定展示区域绘制所述当前选定的内存对象记录所指示的对象图片;
第一判断模块包括:第一判断子模块,用于在所述对象图片不存在于所述终端的缓存中且所述对象图片为所述应用程序的当前界面显示的图片时,得到第一判断子结果;否则,得到第二判断子结果;
第一确定模块包括:第一确定子模块,用于在得到所述第一判断子结果时,确定所述应用程序不存在所述内存泄露漏洞;第二确定子模块,用于在得到所述第二判断子结果时,确定所述应用程序存在所述内存泄露漏洞。
10.根据权利要求9所述的检测装置,其特征在于,所述绘制模块包括:
第一获取子模块,用于根据所述当前选定的内存对象记录的内存对象ID获取内存对象的对象属性数据;
第一读取子模块,用于在通过所述对象属性数据确定所述内存对象为位图对象的情况下,从所述终端的内存中读取所述位图对象的像素属性数据和尺寸属性数据;
生成模块,用于基于所述位图对象的像素属性数据和所述尺寸属性数据生成所述位图对象的图像对象;
绘制子模块,用于将所述图像对象绘制在预定展示区域,以展示所述对象图片。
11.根据权利要求10所述的检测装置,其特征在于,所述生成模块包括:
解码模块,用于对所述像素属性数据和所述尺寸属性数据进行像素解码,得到像素解析数组;
第二获取子模块,用于获取所述像素解析数组中各个元素的像素颜色,其中,所述像素解析数组中每个元素代表所述位图对象中的一个像素;
第一生成子模块,用于基于所述各个元素的像素颜色和所述尺寸属性数据生成所述位图对象的所述图像对象。
12.根据权利要求11所述的检测装置,其特征在于,所述解码模块包括:
第二生成子模块,用于根据所述尺寸属性数据的高度和所述尺寸属性数据的宽度生成原始像素矩阵,其中,所述尺寸属性数据的高度值为N,所述尺寸属性数据的宽度值为M,所述原始像素矩阵为N行M列的矩阵或为N列M行的矩阵,所述尺寸属性数据的高度和所述尺寸属性数据的宽度以像素为单位;
第三获取子模块,用于从所述像素属性数据中获取所述原始像素矩阵中各个元素的颜色通道数据,其中,所述颜色通道数据包括透明度通道数据、红色通道数据、绿色通道数据和蓝色通道数据;
保存模块,用于将各个所述元素的颜色通道数据保存入所述原始像素矩阵的所述元素中,得到所述像素解析数组。
13.根据权利要求11所述的检测装置,其特征在于,所述第二获取子模块包括:
检索模块,用于依次在颜色表中检索所述像素解析数组中各个元素的所述像素颜色。
14.根据权利要求9所述的检测装置,其特征在于,所述获取模块包括:
创建模块,用于创建数据监听接口;
调用模块,用于调用所述数据监听接口监听工作窗口中的所述当前选定的内存对象记录,其中,所述工作窗口中显示有所述内存数据。
15.根据权利要求14所述的检测装置,其特征在于,所述调用模块包括:
监听模块,用于通过所述数据监听接口监听在所述工作窗口中发生的当前选择事件;
提取模块,用于从所述当前选择事件中提取内存对象ID;
第四获取子模块,用于获取所述内存对象ID所指示的所述当前选定的内存对象记录。
16.根据权利要求10至13中任意一项所述的检测装置,其特征在于,
所述第一获取子模块包括:第二读取子模块,用于从所述终端的所述内存中读取所述内存对象ID所指向的所述内存对象的对象名称,其中,所述对象属性数据包括所述内存对象的所述对象名称;
所述检测装置还包括:
第二判断模块,用于在从所述终端的内存中读取所述内存对象ID指向的所述内存对象的对象名称之后,判断所述对象名称是否为预设位图对象名称;
第二确定模块,用于若所述对象名称为所述预设位图对象名称,则确认所述内存对象为所述位图对象;
第三确定模块,用于若所述对象名称不为所述预设位图对象名称,则确认所述内存对象不为所述位图对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410438013.7A CN105373471B (zh) | 2014-08-29 | 2014-08-29 | 用于内存泄露漏洞的检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410438013.7A CN105373471B (zh) | 2014-08-29 | 2014-08-29 | 用于内存泄露漏洞的检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105373471A CN105373471A (zh) | 2016-03-02 |
CN105373471B true CN105373471B (zh) | 2019-05-24 |
Family
ID=55375689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410438013.7A Active CN105373471B (zh) | 2014-08-29 | 2014-08-29 | 用于内存泄露漏洞的检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105373471B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912398A (zh) * | 2016-04-06 | 2016-08-31 | 北京小米移动软件有限公司 | 内存检测方法及装置 |
CN106055407B (zh) * | 2016-05-25 | 2020-02-07 | 努比亚技术有限公司 | 进程资源调整装置及方法 |
CN106056530B (zh) | 2016-06-01 | 2019-12-06 | 腾讯科技(深圳)有限公司 | 应用中图片内容的显示方法及装置 |
CN106502880B (zh) * | 2016-09-20 | 2019-05-17 | 东软集团股份有限公司 | 一种内存泄漏调试方法及装置 |
CN106648908A (zh) * | 2016-10-10 | 2017-05-10 | 广东欧珀移动通信有限公司 | 一种应用进程的控制方法、装置和移动终端 |
CN107656699B (zh) * | 2017-08-18 | 2020-11-10 | 上海车音智能科技有限公司 | 图片调用方法及装置 |
CN110543358A (zh) * | 2018-05-29 | 2019-12-06 | 北京京东尚科信息技术有限公司 | 图片还原方法和装置 |
CN109302639B (zh) * | 2018-09-30 | 2020-10-16 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息的分发方法、装置、终端和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101699426A (zh) * | 2009-11-06 | 2010-04-28 | 上海传知信息科技发展有限公司 | 文档格式转化系统及方法 |
CN102306113A (zh) * | 2011-05-20 | 2012-01-04 | 中兴通讯股份有限公司 | 图片的查看方法及终端 |
CN103309749A (zh) * | 2013-06-25 | 2013-09-18 | 四川九洲电器集团有限责任公司 | 一种基于安卓系统图片资源的内存释放方法 |
CN103605617A (zh) * | 2013-11-21 | 2014-02-26 | 华为技术有限公司 | 一种记录存储数据发生变化的方法及装置 |
-
2014
- 2014-08-29 CN CN201410438013.7A patent/CN105373471B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101699426A (zh) * | 2009-11-06 | 2010-04-28 | 上海传知信息科技发展有限公司 | 文档格式转化系统及方法 |
CN102306113A (zh) * | 2011-05-20 | 2012-01-04 | 中兴通讯股份有限公司 | 图片的查看方法及终端 |
CN103309749A (zh) * | 2013-06-25 | 2013-09-18 | 四川九洲电器集团有限责任公司 | 一种基于安卓系统图片资源的内存释放方法 |
CN103605617A (zh) * | 2013-11-21 | 2014-02-26 | 华为技术有限公司 | 一种记录存储数据发生变化的方法及装置 |
Non-Patent Citations (2)
Title |
---|
Android应用中优化Bitmap使用避免内存溢出;曹帮琴,徐昊;《河南工程学院学报(自然科学版)》;20140630;第26卷(第2期);正文第60-63页 |
Android应用程序中的内存泄露与规避方法;尹文刚,杨斌;《单片机与嵌入式系统应用》;20120630;正文第4-6页 |
Also Published As
Publication number | Publication date |
---|---|
CN105373471A (zh) | 2016-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105373471B (zh) | 用于内存泄露漏洞的检测方法和装置 | |
CN104461903B (zh) | 基于浏览器的测试客户端的方法和装置 | |
CN108156523A (zh) | 交互视频播放的互动方法及装置 | |
CN105549845A (zh) | 一种基于移动终端的页面连续截图方法、系统及移动终端 | |
CN104468774B (zh) | 应用于云盘客户端的数据展示方法及云盘客户端 | |
CN106886491A (zh) | 网页兼容性测试方法及装置 | |
CN105466414B (zh) | 一种导航路线的推荐方法及服务器 | |
CN107292808A (zh) | 图像处理方法、装置及图像协处理器 | |
CN109150990B (zh) | 笔记分享方法、设备及计算机存储介质 | |
CN105404578B (zh) | 用于显示应用程序所占用的内存的方法和装置 | |
CN106951220A (zh) | 数据处理的方法和装置 | |
CN107203470B (zh) | 页面调试方法和装置 | |
CN104932794A (zh) | 一种移动终端客户服务快捷回复方法及系统 | |
CN107193521A (zh) | 数据处理方法、装置和系统 | |
CN106484738A (zh) | 一种页面处理方法及装置 | |
CN109558331A (zh) | 应用程序的缺陷检测方法、装置、设备和存储介质 | |
CN107589979A (zh) | 一种基于虚拟桌面的终端截图方法及装置 | |
CN106507148B (zh) | 显示控制方法和装置 | |
CN110874301B (zh) | 程序卡顿信息的获取方法和装置 | |
CN107797835A (zh) | 对消息进行处理的方法及装置 | |
CN113064689A (zh) | 场景识别方法和装置、存储介质及电子设备 | |
CN105302715B (zh) | 应用程序用户界面的获取方法和装置 | |
CN106302011B (zh) | 基于多端的测试方法及终端 | |
US8702001B2 (en) | Apparatus and method for acquiring code image in a portable terminal | |
CN103927341B (zh) | 一种获取场景信息的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |