CN110704184B - 一种应用内存优化方法、装置和移动终端 - Google Patents
一种应用内存优化方法、装置和移动终端 Download PDFInfo
- Publication number
- CN110704184B CN110704184B CN201910888885.6A CN201910888885A CN110704184B CN 110704184 B CN110704184 B CN 110704184B CN 201910888885 A CN201910888885 A CN 201910888885A CN 110704184 B CN110704184 B CN 110704184B
- Authority
- CN
- China
- Prior art keywords
- memory
- page
- picture
- application
- loading
- 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
Images
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/5022—Mechanisms to release resources
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Telephone Function (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本发明公开了一种应用内存优化方法,适于在移动终端中执行,该方法包括步骤:在应用从Java文件到Dex文件的打包流程中,利用Java字节码框架ASM拦截与图片创建接口和线程创建接口相关的类文件;在类文件中加入自定义的内存监控方法,所述内存监控方法用于监控所述图片创建接口、线程创建接口和应用的虚拟内存使用情况;当应用的虚拟内存占用比例达到预期数值时,在应用内全局通知应用内存异常,并释放当前未显示页面的已加载图片;以及从图片加载库中提取各已加载图片的加载参数,以便当用户返回该未显示页面时,根据所述加载参数再次加载该已加载图片。本发明还公开了对应的应用内存优化装置和移动终端。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用内存优化方法、装置和移动终端。
背景技术
随着互联网的快速发展,智能手机得到了广泛普及,市面上也涌现出了各式各样的手机应用。大多用户都会在手机上安装大量应用,这些应用占用了大量的手机内存空间和资源,从而导致手机卡顿,严重降低了用户体验。特别对于安卓系统,要使其在固定大小的虚拟内存中运行流畅,尤其需要进行内存优化。
而现有的Android内存优化多是在系统层面进行优化,也就是通过算法优化系统的整体内存使用。而实际上,基于Android系统的特性,应用的单个内存占用过高时就会造成崩溃和卡顿,进而影响用户的使用。因此需要实现应用层面的内存优化。
发明内容
为此,本发明提供一种应用内存优化方法、装置方法和移动终端,以力图解决或至少缓解上面存在的问题。
根据本发明的一个方面,提供了一种应用内存优化方法,适于在移动终端中执行,该方法包括步骤:在应用从Java文件到Dex文件的打包流程中,利用Java字节码框架ASM拦截与图片创建接口和线程创建接口相关的类文件;在类文件中加入自定义的内存监控方法,该内存监控方法用于监控图片创建接口、线程创建接口和应用的虚拟内存使用情况;当应用的虚拟内存占用比例达到预期数值时,在应用内全局通知应用内存异常,并释放当前未显示页面的已加载图片;以及从图片加载库中提取各已加载图片的加载参数,以便当用户返回该未显示页面时,根据加载参数再次加载该已加载图片。
可选地,在根据本发明的应用内存优化方法中,内存监控方法具有以下一种或多种监控功能:监控是否创建了内存占用过大图片、监控是否创建了超过终端屏幕尺寸的图片、监控是否出现频繁创建大量线程的场景、监控创建的线程是否有死锁现象。
可选地,在根据本发明的应用内存优化方法中,释放当前未显示页面的已加载图片的步骤包括:根据虚拟内存占用比例的数值大小,释放相应数目个未显示页面的已记载图片。
可选地,在根据本发明的应用内存优化方法中,已加载图片的加载参数包括图片加载地址、所要显示到的控件、以及所要显示的页面。
可选地,在根据本发明的应用内存优化方法中,在应用内全局通知应用内存异常之后,还包括步骤:释放当前未显示页面的所有元素内容,并将已释放页面的页面结构和页面内容保存到本地文件中,以便用户再次打开该已释放页面时,根据页面结构和页面内容再次加载该已释放页面。
可选地,在根据本发明的应用内存优化方法中,应用的首页具有多个子页面,释放当前未显示页面的所有元素包括:当用户在首页的多个子页面之间进行页面切换时,释放当前未显示但已打开过的子页面的所有元素内容。
可选地,在根据本发明的应用内存优化方法中,页面内容包括页面中的图片内容、文本内容和用户当前滑动位置中的一种或多种。
可选地,在根据本发明的应用内存优化方法中,当应用的虚拟内存占用比例达到预期数值时,释放当前未显示页面的已加载图片的步骤包括:当应用的虚拟内存占用比例达到第一预期数值时,释放当前未显示页面的已加载图片;当应用的虚拟内存占用比例达到第二预期数值时,释放当前未显示页面的所有元素内容。
可选地,在根据本发明的应用内存优化方法中,第一预期数值为70%,第二预期数值为90%。
可选地,在根据本发明的应用内存优化方法中,还包括步骤:识别应用中占用内存过大的页面,将该页面以单独进程运行,该单独进程与应用的主进程相隔离,两者具有不同的缓存位置、网络模块和图片加载模块,且各模块文件具有文件锁机制,以防止多个进程同时读写文件时出错。
可选地,在根据本发明的应用内存优化方法中,占用内存过大的页面包括大图浏览页面、视频编辑页面和增强现实浏览页面。
可选地,在根据本发明的应用内存优化方法中,还包括步骤:当应用启动时,根据移动终端的设备信息将所述移动终端划分为低等设备、中等设备和高等设备,并对每种设备采用针对性的图片加载方式,该设备信息包括设备内存、CPU核心数和CPU频率中的一种或多种。
可选地,在根据本发明的应用内存优化方法中,低等设备的图片加载方式包括以下任意一种或多种:停用应用启动页的加载动画、关闭列表的帧动画加载而使用静态图片加载、加载图片时使用低等图片质量、降低图片加载和网络加载的最大可使用线程数量。
可选地,在根据本发明的应用内存优化方法中,低等设备的内存小于1G或者CPU核心数小于2,中等设备的内存小于2G或者CPU频率小于1.8GHz,高等设备的内存大于2G。
可选地,在根据本发明的应用内存优化方法中,在应用内全局通知应用内存异常之后,还包括步骤:采集现场数据上报服务器,以便服务器分析内存异常原因和定位内存异常位置,该现场数据包括当前进程的图片已用内存、应用当前已用虚拟内存、应用最大可用虚拟内存、以及缓存图片中的内存过大图片和宽高大于当前屏幕的图片。
根据本发明的另一方面,提供了一种应用内存优化装置,适于驻留在移动终端中,该装置包括:类文件拦截模块,适于在应用从Java文件到Dex文件的打包流程中,利用Java字节码框架ASM拦截与图片创建接口和线程创建接口相关的类文件;类文件修改模块,适于在类文件中加入自定义的内存监控方法,该内存监控方法用于监控图片创建接口、线程创建接口和应用的虚拟内存使用情况;异常处理模块,适于当应用的虚拟内存占用比例达到预期数值时,在应用内全局通知应用内存异常,并释放当前未显示页面的已加载图片;以及内容再加载模块,适于从图片加载库中提取各已加载图片的加载参数,以便当用户返回该未显示页面时,根据加载参数再次加载该已加载图片。
根据本发明的另一方面,提供了一种移动终端,包括:一个或多个处理器;存储器;和一个或多个程序,其中该一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,该一个或多个程序包括用于执行如上所述的应用内存优化方法的指令。
根据本发明的又一方面,提供了一种存储一个或多个程序的可读存储介质,所述一个或多个程序包括指令,该指令当被移动终端执行时,使得该移动终端执行如上所述的应用内存优化方法。
根据本发明的技术方案,通过ASM插装技术监控应用的图片创建接口、线程创建接口和应用的虚拟内存使用情况。当应用虚拟内存占用过高时会在应用内全局通知应用内存异常,进一步地还可以将不合理的内存使用上报服务器报警。本发明通过自建的内存监控系统,根据用户的内存使用情况自动释放临时不使用的资源达到内存优化的目的。该临时不使用的资源可以是未显示页面的已记载图片,或者是未显示页面的所有元素内容。
而且,本发明可以根据内存占用情况进行不同层级的释放。例如,当内存占比达到第一预期数值(如70%)时,只释放未显示页面的已记载图片;当达到第二预期数值时(如90%),释放未显示页面的所有元素内容。当占比在第一预期数值附近时,还可以释放不同页数的未显示页面的已记载图片。这样能够兼容应用使用的流畅性和页面再显示时的加载速度,在保证应用流畅性的基础上,尽量降低已加载页面的释放量,提高用户再次浏览该页面时的用户体验。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的移动终端100的示意图;
图2示出了根据本发明一个实施例的应用内存优化方法200的流程图;
图3a和3b分别示出了根据本发明一个实施例的ASM插桩替换前后的代码示意图;以及
图4示出了根据本发明一个实施例的应用内存优化装置400的结构图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的移动终端100的结构框图。移动终端100可以包括存储器接口102、一个或多个数据处理器、图像处理器和/或中央处理单元104,以及外围接口106。
存储器接口102、一个或多个处理器104和/或外围接口106既可以是分立元件,也可以集成在一个或多个集成电路中。在移动终端100中,各种元件可以通过一条或多条通信总线或信号线来耦合。传感器、设备和子系统可以耦合到外围接口106,以便帮助实现多种功能。
例如,运动传感器110、光线传感器112和距离传感器114可以耦合到外围接口106,以方便定向、照明和测距等功能。其他传感器116同样可以与外围接口106相连,例如定位系统(例如GPS接收机)、加速度传感器、温度传感器、生物测定传感器或其他感测设备,由此可以帮助实施相关的功能。
相机子系统120和光学传感器122可以用于方便诸如记录照片和视频剪辑的相机功能的实现,其中所述相机子系统和光学传感器例如可以是电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)光学传感器。可以通过一个或多个无线通信子系统124来帮助实现通信功能,其中无线通信子系统可以包括射频接收机和发射机和/或光(例如红外)接收机和发射机。无线通信子系统124的特定设计和实施方式可以取决于移动终端100所支持的一个或多个通信网络。例如,移动终端100可以包括被设计成支持LTE、3G、GSM网络、GPRS网络、EDGE网络、Wi-Fi或WiMax网络以及BlueboothTM网络的通信子系统124。
音频子系统126可以与扬声器128以及麦克风130相耦合,以便帮助实施启用语音的功能,例如语音识别、语音复制、数字记录和电话功能。I/O子系统140可以包括触摸屏控制器142和/或一个或多个其他输入控制器144。触摸屏控制器142可以耦合到触摸屏146。举例来说,该触摸屏146和触摸屏控制器142可以使用多种触摸感测技术中的任何一种来检测与之进行的接触和移动或是暂停,其中感测技术包括但不局限于电容性、电阻性、红外和表面声波技术。
一个或多个其他输入控制器144可以耦合到其他输入/控制设备148,例如一个或多个按钮、摇杆开关、拇指旋轮、红外端口、USB端口、和/或指示笔之类的指点设备。所述一个或多个按钮(未显示)可以包括用于控制扬声器128和/或麦克风130音量的向上/向下按钮。
存储器接口102可以与存储器150相耦合。该存储器150可以包括高速随机存取存储器和/或非易失性存储器,例如一个或多个磁盘存储设备,一个或多个光学存储设备,和/或闪存存储器(例如NAND,NOR)。存储器150可以存储操作系统152,例如Android、iOS或是Windows Phone之类的操作系统。该操作系统152可以包括用于处理基本系统服务以及执行依赖于硬件的任务的指令。存储器150还可以存储应用154(即,应用程序,以下简称应用)。在移动终端运行时,会从存储器150中加载操作系统152,并且由处理器104执行。应用154在运行时,也会从存储器150中加载,并由处理器104执行。应用154运行在操作系统之上,利用操作系统以及底层硬件提供的接口实现各种用户期望的功能,如即时通信、网页浏览、图片管理、视频播放等。应用154可以是独立于操作系统提供的,也可以是操作系统自带的,包括各种社交应用软件,如QQ、微信、微博等,也包括各种视频播放游戏直播等应用软件,还可以包括相册、计算器、录音笔等系统自带应用程序。另外,应用154被安装到移动终端100中时,也可以向操作系统添加驱动模块。
本发明的实施例所提供的用于执行应用内存优化方法200的程序为应用154的一种。在一些实施例中,移动终端100被配置为执行根据本发明的应用内存优化方法200,该移动终端可以为安卓终端。
图2示出了根据本发明一个实施例的应用内存优化方法200的流程图,适于在移动终端中执行,如在移动终端100中执行,用于进行应用内存的优化。
如图2所示,该方法始于步骤S210。在步骤S210中,在应用从Java文件到Dex文件的打包流程中,利用Java字节码框架ASM拦截与图片创建接口和线程创建接口相关的类文件。
Java文件是安卓开发的代码文件类型,Dex文件是Java文件打包时会编译成可运行在Java虚拟机的.class二进制文件,dex就是.class文件的集合。ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM可以直接产生二进制类文件,也可以在类被加载入Java虚拟机之前动态改变类行为。ASM插桩可以在Android编译时,从类文件打包到Dex中的过程中拦截便利类文件的字节码,通过修改、添加、删除相关字节码来达到动态改变程序的目的。步骤S210中的拦截,也就是拦截打包到Dex中的类文件。通常可以自定义Gradle插件得到类文件,通过ASM修改字节码后再覆盖原类文件,即可完成ASM函数的插桩。
随后,在步骤S220中,在类文件中加入自定义的内存监控方法,该内存监控方法用于监控图片创建接口、线程创建接口和应用的虚拟内存使用情况。
具体地,通过ASM插桩来匹配所有的图片创建接口和线程创建接口,统一替换为自定义的内存监控方法,就可以达成监控整个应用的图片内存和线程内存的目的。该内存监控方法还可以从整体监控应用的虚拟内存使用情况,每个监控功能可作为一个单独的模块功能,内部通过循环获取当前已用的虚拟内存值和最大可用虚拟内存值,来起到监控通知的效果。ASM插桩通过扫描匹配系统的线程和图片创建接口的类或方法,再替换该系统类和方法,修改为自定义的类和方法。图3a示出了插桩替换前的代码,图3b示出了插桩替换后的代码,可以匹配到系统的线程创建类(如图3a中的Thread类),通过ASM插桩替换为自定义的类(如图3b中的AHCustomThread),最后反编译最终运行的代码。ASM插桩方法无需修改业务代码,在向Dex打包时可自动化完成功能。
通过ASM插装的图片内存监控可以有效发现应用中的图片内存问题,通过ASM插装的线程内存监控可以有效检测应用中的线程使用问题。该内存监控方法监控图片创建和线程创建后就可以实现监控如下功能:监控是否创建了内存占用过大图片(例如大于2M的图片)、监控是否创建了超过终端屏幕尺寸的图片(如原图尺寸大于终端屏幕尺寸)、监控是否出现频繁创建大量线程的场景、监控创建的线程是否有死锁现象。
如果监控出现了上述任一种情况,则可以通知服务器进行处理。如果发现创建了超过终端屏幕尺寸的图片,则通知服务器修改图片显示的缩放比,使其适配当前屏幕大小。如果发现频繁创建大量线程的场景,则通知服务器修改该场景下的最大可创建线程数量。如果创建的线程有死锁或死循环的现象,则通知服务器修改线程之间的逻辑关系。可以看出,该内存监控方法有助于完善业务逻辑漏洞。
随后,在步骤S230中,当应用的虚拟内存占用比例达到预期数值时,在应用内全局通知应用内存异常,并释放当前未显示页面的已加载图片。
其中,虚拟内存占用比例是指该应用的虚拟内存使用大小和应用的最大可用虚拟内存大小的比值。最大可用虚拟内存一般是512M,当然有些手机型号版本不同也会是其他数值,如可能为200M。一般地,可以达到70%的预期数值时,全局通知内存异常,也可以达到90%的预期数值时,全局通知内存异常,当然也可以是这两者之间的任一数值,本发明对此不作限制。另外,在达到70%的预期数值时,如果之后虚拟内存占比还在持续上升,则可以持续通知应用内容异常。
应用内存异常通知的设计,主要是考虑系统onLowMemory、onTrimMemory回调并不及时,并且只在整个手机内存不足时回调。但是应用进程分配的虚拟内存使用是有限制的,超过该限制后,通常会直接OOM而收不到该内存异常通知。因此,可以通过后台循环线程判断当前虚拟内存的使用情况,当虚拟内存占比达到70%、80%和/或90%时全局通知。
需要说明的是,释放当前未显示页面的已记载图片,是指该页面已经被用户打开过,因此页面中的图片已记载过。但用户之后从该页面滑到了其他页面中,因此该页面未在当前屏幕中显示出来。
根据本发明的一个实施例,可以根据虚拟内存占用比例的数值大小,释放相应数目个未显示页面的已记载图片。例如,当虚拟内存占比为70%,释放两个未显示页面中的已加载图片,当虚拟内存占比为75%时,释放四个未显示页面中的已记载图片。当然也可以设置为其他数值释放策略,只要释放后的虚拟内存占比能满足流畅性使用要求即可。这样,在保证应用使用流畅性的基础上,尽量减少已加载内容的释放,保证用户再次打开该页面时能快速显示出来。
根据本发明的另一个实施例,在应用内全局通知应用内存异常之后,还可以采集现场数据上报服务器,以便服务器分析内存异常原因和定位内存异常位置。其中,现场数据包括当前进程的图片已用内存、应用当前已用虚拟内存、应用最大可用虚拟内存、以及缓存图片中的内存过大图片和宽高大于当前屏幕的图片。
随后,在步骤S240中,从图片加载库中提取各已加载图片的加载参数,以便当用户再返回该未显示页面时,根据加载参数再次加载该已加载图片。
这里,主要是考虑Android应用页面的内存占用大部分是图片的占用,因此为了解决图片内存占用问题,提出了图片内存自动释放方案。内存优化系统会统一改造图片加载库(ImageLoader,Fresco)的加载,从中提取出加载参数。在收到内存异常通知时将自动释放不在显示的页面的图片加载,当用户再返回该释放页面时将根据加载参数再次加载此图片,就可以做到对用户无感知,提高用户体验。
在一种实现方式中,移动终端可以提前从图片加载库中提取所有已记载图片的加载参数进行保存,之后当再请求显示该页面时,查询并获取对应的加载参数进行显示。或者,可以在释放已加载图片时,才去提取该已加载图片的加载参数进行保存,以便后续被调用,这种方式更能降低内存占用。其中,已加载图片的加载参数包括图片加载地址、所要显示到的控件(即加载控件)、以及所要显示的页面(即加载页面)。
根据本发明的一个实施例,方法200还可以包括步骤:当应用的虚拟内存占用比例达到预期数值时,在应用内全局通知应用内存异常,并释放当前未显示页面的所有元素内容,并将已释放页面的页面结构和页面内容保存到本地文件中,以便用户再次打开该已释放页面时,根据页面结构和页面内容再次加载该已释放页面。这里的预期数值与步骤S230中的预期数值定义一样,这里不再赘述。
通常,应用的首页具有多个子页面。释放当前未显示页面的所有元素实际是指,当用户在首页的多个子页面之间进行页面切换时,释放当前未显示但已打开过的子页面的所有元素内容。其中,页面内容包括页面中的图片内容、文本内容和用户当前滑动位置中的一种或多种。
首页是所有页面的主入口,运行中一直常驻内存,目前各个主页一般使用ViewPager和Fragmen框架进行开发。为了更好的用户体验打开过的子页面都不会释放,用户打开新的页面后原页面就会被隐藏,等待下次用户再次打开时可以瞬间展示,但是这样占用了大量内存。因此,本发明自建了一个新的页面切换组件ViewPager,当接收到内存警告(应用内存异常通知)时,自动触发该自建ViewPager的释放机制,同时触发未显示页面的Fragment的内部释放逻辑。
具体地,当应用内存异常时,将其他未显示页面的所有元素内容保存到本地文件后,销毁Fragment内部所有的元素。当用户再次打开被销毁页面时,自动从本地文件中读取页面的缓存,重新创建页面的元素。因为该页面恢复是从本地文件中读取的,明显比从网络接口中获取数据的速度快很多。
此外,还可以根据虚拟内存占比大小来释放相应数目的未显示页面的所有元素,只要释放后的虚拟内存占比能满足流畅性使用要求即可。例如,当该内存占比为90%时,释放两个未显示页面的所有元素内容;当该内存占比为95%时,释放四个未显示页面的所有元素内容;当该内存占比为99%时,释放所有未显示页面的所有元素内容。
以上提出的图片内存释放可以在不影响用户使用的情况下大量释放图片的内存使用,首页框架释放方案可以自动释放不在显示的页面内存占用。这两种方案可以同时进行,也可以只选一种进行。例如,可以释放所有未显示页面的元素内容时,就不会只释放部分已加载图片。
在此基础上,本发明可以分层级的进行页面内容释放,在内存空间尚够的时候只释放图片层级,当内存空间严重不足的时候释放整个页面层级,只要释放后的虚拟内存占比能满足流畅性使用要求即可。这样能够尽量不影响页面再打开的快速显示。例如,应用的虚拟内存占用比例达到第一预期数值(如70%)时,释放当前未显示页面的已加载图片;当应用的虚拟内存占用比例达到第二预期数值(如90%)时,释放当前未显示页面的所有元素内容。
根据本发明的又一个实施例,方法200还可以通过设置多进程策略来优化应用内存,针对应用中比较占用内存的模块抽离成单独的进程,这可以减少主进程所占用的内存,避免OOM问题。具体地,识别应用中占用内存过大的页面,将该页面以单独进程运行,单独进程与应用的主进程相隔离,两者具有不同的缓存位置、网络模块和图片加载模块,且各模块文件具有文件锁机制,以防止多个进程同时读写文件时出错。其中,占用内存过大的页面一般包括大图浏览页面、视频编辑页面和增强现实AR浏览页面。
这里,主要是考虑Android系统对每个应用进程的内存占用是有限制的(如512M),默认只有一个主进程运行所有的页面和后台线程,但是一个应用是允许创建多个进程,可以通过系统配置让一个页面运行在单独的进程中,单独进程的页面内存就会与主进程完全隔离。单独进程的页面使用的各功能模块需要重新初始化,例如图片加载模块,主进程和单独进程都运行相关图片模块逻辑,但是内部创建的对象和缓存都是两处位置,两种进程之间互不通信。
根据本发明的再一个实施例,方法200还可以根据设备等级来优化应用内存。具体地,当应用启动时,根据移动终端的设备信息将移动终端划分为低等设备、中等设备和高等设备,并对每种设备采用针对性的图片加载方式,所述设备信息包括设备内存、CPU核心数和CPU频率中的一种或多种。其中,低等设备一般是指内存小于1G或者CPU核心数小于2的设备,中等设备一般是指内存小于2G或者CPU频率小于1.8GHz的设备,高等设备一般是指内存大于2G的设备。当然,也可以设置其他数值划分标准,本发明对此不作限制。
对于低等设备而言,其图片加载方式包括以下任意一种或多种:停用应用启动页的加载动画、关闭列表的帧动画加载而使用静态图片加载、加载图片时使用低等图片质量(如RGB565)、降低图片加载和网络加载的最大可使用线程数量。其中,可将图片加载和网络加载的最大可使用线程数量降低至正常数量的一半。如果正常数量为8,则将该最大可使用线程数量降低为4。而高等设备就可以正常使用启动页的加载动画,使用列表加载帧动画,使用高质量图片(如RGB8888),以及使用8个最大线程数量。
图4示出了根据本发明一个实施例的应用内存优化装置400的结构框图,该装置400可以驻留在移动终端中,如驻留在移动终端100中。如图4所示,装置400包括:类文件拦截模块410、类文件修改模块420、异常处理模块430和内容再加载模块440。
类文件拦截模块410在应用从Java文件到Dex文件的打包流程中,利用Java字节码框架ASM拦截与图片创建接口和线程创建接口相关的类文件。类文件拦截模块410可以进行与上面在步骤S210中描述的处理相对应的处理,这里不再展开赘述。
类文件修改模块420在类文件中加入自定义的内存监控方法,该内存监控方法用于监控图片创建接口、线程创建接口和应用的虚拟内存使用情况。类文件修改模块420可以进行与上面在步骤S220中描述的处理相对应的处理,这里不再展开赘述。
异常处理模块430当应用的虚拟内存占用比例达到预期数值时,在应用内全局通知应用内存异常,并释放当前未显示页面的已加载图片。异常处理模块430可以进行与上面在步骤S230中描述的处理相对应的处理,这里不再展开赘述。
根据一个实施例,异常处理模块430在应用内全局通知应用内存异常,还可以释放当前未显示页面的所有元素内容,并将已释放页面的页面结构和页面内容保存到本地文件中,以便用户再次打开该已释放页面时,根据所述页面结构和页面内容再次加载该已释放页面。进一步地,异常处理模块430可以在应用的虚拟内存占用比例达到第一预期数值时,释放当前未显示页面的已加载图片,以及在应用的虚拟内存占用比例达到第二预期数值时,释放当前未显示页面的所有元素内容。
根据另一个实施例,异常处理模块430还可以在应用内全局通知应用内存异常之后,采集现场数据上报服务器,以便服务器分析内存异常原因和定位内存异常位置。其中,现场数据包括当前进程的图片已用内存、应用当前已用虚拟内存、应用最大可用虚拟内存、以及缓存图片中的内存过大图片和宽高大于当前屏幕的图片。
内容再加载模块440从图片加载库中提取各已加载图片的加载参数,以便当用户返回该未显示页面时,根据加载参数再次加载该已加载图片。内容再加载模块440可以进行与上面在步骤S240中描述的处理相对应的处理,这里不再展开赘述。
根据本发明的一个实施例,装置400还可以包括多进程处理模块(图中未示出),适于识别应用中占用内存过大的页面,将该页面以单独进程运行,所述单独进程与应用的主进程相隔离,两者具有不同的缓存位置、网络模块和图片加载模块,且各模块文件具有文件锁机制,以防止多个进程同时读写文件时出错。其中,占用内存过大的页面包括大图浏览页面、视频编辑页面和AR浏览页面。
根据本发明的一个实施例,装置400还可以包括分级加载模块(图中未示出),适于当应用启动时,根据移动终端的设备信息将所述移动终端划分为低等设备、中等设备和高等设备,并对每种设备采用针对性的图片加载方式。其中设备信息包括设备内存、CPU核心数和CPU频率中的一种或多种。
根据本发明的技术方案,提供了一种应用内存优化系统,通过ASM插装技术监控图片创建接口和线程创建接口,以监控内存使用,及时上报不合理的使用。自建内存报警机制,当内存异常时全局通知应用内存异常,该通知策略还可以触发图片自动释放和首页子页面的自动释放。当应用内存占用较高时,可以在不影响用户体验的情况下,主动释放当前未立即使用的内存。其中图片内存释放基于Fresco和ImageLoader库实现。多进程策略减少了主进程的内存占用,设备分级策略人提高低端设备的应用流畅性。该内存优化系统后极大的减少了因用户内存占用而导致的崩溃和卡顿现象,提高用户体验。
A8、如A5所述的方法,其中,当应用的虚拟内存占用比例达到预期数值时,释放当前未显示页面的已加载图片的步骤包括:当应用的虚拟内存占用比例达到第一预期数值时,释放当前未显示页面的已加载图片;当应用的虚拟内存占用比例达到第二预期数值时,释放当前未显示页面的所有元素内容。A9、如A8所述的方法,其中,所述第一预期数值为70%,所述第二预期数值为90%。A10、如A1-A9中任一项所述的方法,还包括步骤:识别应用中占用内存过大的页面,将该页面以单独进程运行,所述单独进程与应用的主进程相隔离,两者具有不同的缓存位置、网络模块和图片加载模块,且各模块文件具有文件锁机制,以防止多个进程同时读写文件时出错。
A11、如A10所述的方法,所述占用内存过大的页面包括大图浏览页面、视频编辑页面和增强现实浏览页面。A12、如A1-A11中任一项所述的方法,还包括步骤:当应用启动时,根据所述移动终端的设备信息将所述移动终端划分为低等设备、中等设备和高等设备,并对每种设备采用针对性的图片加载方式,所述设备信息包括设备内存、CPU核心数和CPU频率中的一种或多种。A13、如A12所述的方法,其中低等设备的图片加载方式包括以下任意一种或多种:停用应用启动页的加载动画、关闭列表的帧动画加载而使用静态图片加载、加载图片时使用低等图片质量、降低图片加载和网络加载的最大可使用线程数量。
A14、如A12所述的方法,其中,所述低等设备的内存小于1G或者CPU核心数小于2,所述中等设备的内存小于2G或者CPU频率小于1.8GHz,所述高等设备的内存大于2G。A15、如A1-A14中任一项所述的方法,在应用内全局通知应用内存异常之后,还包括步骤:采集现场数据上报服务器,以便服务器分析内存异常原因和定位内存异常位置,所述现场数据包括当前进程的图片已用内存、应用当前已用虚拟内存、应用最大可用虚拟内存、以及缓存图片中的内存过大图片和宽高大于当前屏幕的图片。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的应用内存优化方法。
以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (16)
1.一种应用内存优化方法,适于在移动终端中执行,该方法包括步骤:
在应用从Java文件到Dex文件的打包流程中,利用Java字节码框架ASM拦截与图片创建接口和线程创建接口相关的类文件;
在所述类文件中加入自定义的内存监控方法,所述内存监控方法用于监控所述图片创建接口、线程创建接口和应用的虚拟内存使用情况;
当应用的虚拟内存占用比例达到第一预期数值时,在应用内全局通知应用内存异常,并释放当前未显示页面的已加载图片并从图片加载库中提取各已加载图片的加载参数,以便当用户返回该未显示页面时,根据所述加载参数再次加载该已加载图片;以及
当应用的虚拟内存占用比例达到第二预期数值时,释放当前未显示页面的所有元素内容,并将已释放页面的页面结构和页面内容保存到本地文件中,以便用户再次打开该已释放页面时,根据所述页面结构和页面内容再次加载该已释放页面。
2.如权利要求1所述的方法,所述内存监控方法具有以下一种或多种监控功能:
监控是否创建了内存占用过大图片、监控是否创建了超过终端屏幕尺寸的图片、监控是否出现频繁创建大量线程的场景、监控创建的线程是否有死锁现象。
3.如权利要求1所述的方法,其中,所述释放当前未显示页面的已加载图片的步骤包括:
根据所述虚拟内存占用比例的数值大小,释放相应数目个未显示页面的已记载图片。
4.如权利要求1所述的方法,其中,所述已加载图片的加载参数包括图片加载地址、所要显示到的控件、以及所要显示的页面。
5.如权利要求1所述的方法,其中,所述应用的首页具有多个子页面,所述释放当前未显示页面的所有元素包括:
当用户在首页的多个子页面之间进行页面切换时,释放当前未显示但已打开过的子页面的所有元素内容。
6.如权利要求1所述的方法,其中,所述页面内容包括页面中的图片内容、文本内容和用户当前滑动位置中的一种或多种。
7.如权利要求1所述的方法,其中,所述第一预期数值为70%,所述第二预期数值为90%。
8.如权利要求1-7中任一项所述的方法,还包括步骤:
识别应用中占用内存过大的页面,将该页面以单独进程运行,所述单独进程与应用的主进程相隔离,两者具有不同的缓存位置、网络模块和图片加载模块,且各模块文件具有文件锁机制,以防止多个进程同时读写文件时出错。
9.如权利要求8所述的方法,所述占用内存过大的页面包括大图浏览页面、视频编辑页面和增强现实浏览页面。
10.如权利要求1-7中任一项所述的方法,还包括步骤:
当应用启动时,根据所述移动终端的设备信息将所述移动终端划分为低等设备、中等设备和高等设备,并对每种设备采用针对性的图片加载方式,所述设备信息包括设备内存、CPU核心数和CPU频率中的一种或多种。
11.如权利要求10所述的方法,其中低等设备的图片加载方式包括以下任意一种或多种:
停用应用启动页的加载动画、关闭列表的帧动画加载而使用静态图片加载、加载图片时使用低等图片质量、降低图片加载和网络加载的最大可使用线程数量。
12.如权利要求10所述的方法,其中,
所述低等设备的内存小于1G或者CPU核心数小于2,所述中等设备的内存小于2G或者CPU频率小于1.8GHz,所述高等设备的内存大于2G。
13.如权利要求1所述的方法,在应用内全局通知应用内存异常之后,还包括步骤:
采集现场数据上报服务器,以便服务器分析内存异常原因和定位内存异常位置,所述现场数据包括当前进程的图片已用内存、应用当前已用虚拟内存、应用最大可用虚拟内存、以及缓存图片中的内存过大图片和宽高大于当前屏幕的图片。
14.一种应用内存优化装置,适于驻留在移动终端中,所述装置包括:
类文件拦截模块,适于在应用从Java文件到Dex文件的打包流程中时,利用Java字节码框架ASM拦截与图片创建接口和线程创建接口相关的类文件;
类文件修改模块,适于在所述类文件中加入自定义的内存监控方法,所述内存监控方法用于监控所述图片创建接口、线程创建接口和应用的虚拟内存使用情况;
异常处理模块,适于当应用的虚拟内存占用比例达到第一预期数值时,在应用内全局通知应用内存异常,并释放当前未显示页面的已加载图片;还适于当应用的虚拟内存占用比例达到第二预期数值时,释放当前未显示页面的所有元素内容,并将已释放页面的页面结构和页面内容保存到本地文件中;以及
内容再加载模块,适于从图片加载库中提取各已加载图片的加载参数,以便当用户返回该未显示页面时,根据所述加载参数再次加载该已加载图片,还适于从本地文件中提取各已加载页面的页面结构和页面内容,以便用户再次打开该已释放页面时,根据所述页面结构和页面内容再次加载该已释放页面。
15.一种移动终端,包括:
至少一个处理器;以及
包括计算机程序指令的至少一个存储器;
所述至少一个存储器和所述计算机程序指令被配置为与所述至少一个处理器一起使得所述移动终端执行如权利要求1-13中任一项所述的方法。
16.一种存储一个或多个程序的可读存储介质,所述一个或多个程序包括指令,所述指令当由移动终端执行时,使得所述移动终端执行根据权利要求1-13中所述的方法中的任一方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910888885.6A CN110704184B (zh) | 2019-09-19 | 2019-09-19 | 一种应用内存优化方法、装置和移动终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910888885.6A CN110704184B (zh) | 2019-09-19 | 2019-09-19 | 一种应用内存优化方法、装置和移动终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110704184A CN110704184A (zh) | 2020-01-17 |
CN110704184B true CN110704184B (zh) | 2022-09-06 |
Family
ID=69194995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910888885.6A Active CN110704184B (zh) | 2019-09-19 | 2019-09-19 | 一种应用内存优化方法、装置和移动终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110704184B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199250B (zh) * | 2020-09-15 | 2024-05-14 | 北京达佳互联信息技术有限公司 | 图片的监控方法、装置、电子设备和存储介质 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111414308B (zh) * | 2020-03-26 | 2023-08-22 | 抖音视界有限公司 | 应用程序包的处理方法和应用程序的运行方法、装置 |
CN111562913B (zh) * | 2020-04-28 | 2023-03-14 | 抖音视界有限公司 | 视图组件的预创建方法、装置、设备及计算机可读介质 |
CN111625289B (zh) * | 2020-05-06 | 2023-03-24 | 小船出海教育科技(北京)有限公司 | 应用程序快速启动方法、装置和电子设备 |
CN111966642B (zh) * | 2020-08-28 | 2022-09-30 | 维沃移动通信有限公司 | 图片管理方法、装置及电子设备 |
CN112162818B (zh) * | 2020-09-16 | 2023-04-07 | Oppo(重庆)智能科技有限公司 | 一种虚拟内存分配方法、装置、电子设备及存储介质 |
CN114691452A (zh) * | 2022-03-24 | 2022-07-01 | 北京百度网讯科技有限公司 | 内存监测方法、装置、设备以及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105513005A (zh) * | 2015-12-02 | 2016-04-20 | 魅族科技(中国)有限公司 | 一种内存管理的方法及终端 |
CN106341533A (zh) * | 2016-08-30 | 2017-01-18 | 腾讯科技(深圳)有限公司 | 应用中加载网络资源的方法和装置 |
CN108762916A (zh) * | 2018-05-03 | 2018-11-06 | 北京五八信息技术有限公司 | 一种内存管理方法、装置、设备及计算机可读存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201405706D0 (en) * | 2014-03-31 | 2014-05-14 | Irdeto Bv | Software protection |
CN104461745A (zh) * | 2014-12-23 | 2015-03-25 | 中科创达软件股份有限公司 | 一种内存优化方法及装置 |
CN104598809B (zh) * | 2015-02-13 | 2017-04-19 | 北京奇虎科技有限公司 | 程序的监控方法及其防御方法以及相关装置 |
CN110083436A (zh) * | 2019-05-14 | 2019-08-02 | 上海理想信息产业(集团)有限公司 | 一种基于Java字节码增强技术的业务数据实时监控系统及方法 |
-
2019
- 2019-09-19 CN CN201910888885.6A patent/CN110704184B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105513005A (zh) * | 2015-12-02 | 2016-04-20 | 魅族科技(中国)有限公司 | 一种内存管理的方法及终端 |
CN106341533A (zh) * | 2016-08-30 | 2017-01-18 | 腾讯科技(深圳)有限公司 | 应用中加载网络资源的方法和装置 |
CN108762916A (zh) * | 2018-05-03 | 2018-11-06 | 北京五八信息技术有限公司 | 一种内存管理方法、装置、设备及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
Android手机App性能优化方法与技术研究;王永鹏;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20180515(第05期);I138-256 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199250B (zh) * | 2020-09-15 | 2024-05-14 | 北京达佳互联信息技术有限公司 | 图片的监控方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110704184A (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704184B (zh) | 一种应用内存优化方法、装置和移动终端 | |
US11604759B2 (en) | Retention management for data streams | |
CN105339932B (zh) | 浏览器驱动的功率节省 | |
CN107329750B (zh) | 应用程序中广告页面的识别方法、跳转方法及移动终端 | |
US10423527B2 (en) | Memory management and image display for mobile devices | |
US20150012924A1 (en) | Method and Device for Loading a Plug-In | |
CN111880991B (zh) | 内存优化方法、装置、电子设备及计算机可读存储介质 | |
US20220035655A1 (en) | Method and Device for Anonymous Page Management, Terminal Device, and Readable Storage Medium | |
CN104252284A (zh) | 文件显示方法及装置 | |
US20170300459A1 (en) | Card-type desktop implementation method and apparatus | |
WO2015074526A1 (en) | Method and apparatus for injecting java by tecode into target process | |
CN109684573B (zh) | 目标图片显示方法及装置、存储介质、电子设备 | |
CN105893471B (zh) | 一种数据处理方法及电子设备 | |
CN110515814B (zh) | iOS客户端的全量日志收集方法、装置和移动终端 | |
CN103677893B (zh) | 开机的映像文件的大小缩减方法及运算装置 | |
WO2024078348A1 (zh) | 应用移植环境下注册表操作的处理方法、装置和介质 | |
US20140181161A1 (en) | Method and system for speeding up computer program | |
CN110798521B (zh) | 分享文件的方法、装置、电子设备及存储介质 | |
CN103577246A (zh) | 防止虚拟机逃逸的方法和装置 | |
KR20150025287A (ko) | 모바일 단말의 응용프로그램 저장공간 관리 장치 및 관리 방법 | |
US20140207833A1 (en) | File opening method, apparatus, and terminal | |
CN115269077A (zh) | 一种图片显示方法、模块、移动终端及存储介质 | |
US10776261B2 (en) | Storage apparatus managing system and storage apparatus managing method for increasing data reading speed | |
CN116057937A (zh) | 用于检测和去除媒体中的伪影/劣化的方法和电子装置 | |
US8949720B1 (en) | Systems and methods for managing access-control settings |
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 |