CN116185889A - 一种基于对象隐藏的内存优化方法、智能终端及存储介质 - Google Patents
一种基于对象隐藏的内存优化方法、智能终端及存储介质 Download PDFInfo
- Publication number
- CN116185889A CN116185889A CN202310157285.9A CN202310157285A CN116185889A CN 116185889 A CN116185889 A CN 116185889A CN 202310157285 A CN202310157285 A CN 202310157285A CN 116185889 A CN116185889 A CN 116185889A
- Authority
- CN
- China
- Prior art keywords
- hidden
- garbage
- memory
- target
- objects
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种基于对象隐藏的内存优化方法、智能终端及存储介质,属于计算机技术领域,其方法包括:基于预设的目标程序对待测内存中的目标内核对象实时进行监视,得到监视结果;所述监视结果包括隐藏对象和非隐藏对象;若所述监视结果为所述隐藏对象,基于可达性分析算法将所述隐藏对象划分为存活对象和垃圾对象;回收所述垃圾对象以释放所述待测内存。本申请将作为垃圾对象的隐藏对象进行回收,从而便于在CPU长时间运行并使用时,实时释放待测内存,同时亦不影响正常内核对象的运行,在CPU长时间运行并使用时,有效降低了内存泄漏的概率。
Description
技术领域
本申请涉及计算机技术领域,尤其是涉及一种基于对象隐藏的内存优化方法、智能终端及存储介质。
背景技术
CPU,即中央处理器,是计算机的核心部件,内存作为计算机的存储单元,用于暂时存放CPU中的运算数据和与硬盘等外部存储器交换的数据。CPU在计算机运行中会将需要运算的数据调到内存中进行运算,当运算完成后CPU即对运算结果进行传送,故内存的运行决定了计算机的稳定运行。内核对象是内存中的一个内存块,由操作系统创建并维护,例如,Windows系统、Linux系统等。操作系统创建和使用多种类型的内核对象,如文件对象,事件对象,互斥对象,进程对象等等。
在现有技术中,内核对象的创建过程如下:首先在进程中调用相应内核对象的创建函数,并传入相应的参数,此时内核为该对象分配一个内存块,在进程的句柄表中找到一个空项,利用该内核对象和函数调用时传入的参数对这个空项进行初始化,并且将该项索引作为函数返回值,即完成了对内核对象的创建。操作系统创建内核对象会申请内存,即表示内核对象的创建会占用CPU资源;内核对象的销毁过程如下:调用CloseHandle函数,并通过该函数首先检查调用进程的句柄表,以确保传递至句柄表的索引不是一个进程实际上无权访问的操作,若该索引有效,操作系统即可获得内核对象的数据结构的地址,并且对其计数器减1,如果计数器为0,内核便从内存中撤销该对象。操作系统销毁内核对象会回收内存,即表示内核对象的销毁亦会占用CPU资源。
针对上述中的相关技术,操作系统的创建内核对象和销毁内核对象的操作均会消耗内存,在CPU长时间运行并使用时,会增大内存泄漏的概率。
发明内容
为了有效降低内存泄漏的概率,本申请提供一种基于对象隐藏的内存优化方法、智能终端及存储介质。
第一方面,本申请提供的一种基于对象隐藏的内存优化方法采用如下的技术方案:
一种基于对象隐藏的内存优化方法,包括:
基于预设的目标程序对待测内存中的目标内核对象实时进行监视,得到监视结果;所述监视结果包括隐藏对象和非隐藏对象;
若所述监视结果为所述隐藏对象,基于可达性分析算法将所述隐藏对象划分为存活对象和垃圾对象;
回收所述垃圾对象以释放所述待测内存。
通过采用上述技术方案,将为垃圾对象的隐藏对象进行回收,从而便于在CPU长时间运行并使用时,实时释放待测内存,同时亦不影响正常内核对象的运行,有效降低了内存泄漏的概率。
可选的,所述基于预设的目标程序对目标内核对象进行监视,得到监视结果,包括:
通过所述目标程序实时监视所述目标内核对象的运行状态;
基于所述运行状态判断所述目标内核对象是否具有隐藏性;
若具有所述隐藏性,判定所述目标内核对象为所述隐藏对象;
若不具有所述隐藏性,判定所述目标内核对象为所述非隐藏对象。
通过采用上述技术方案,目标内核对象是否为隐藏对象通过目标内核对象的运行状态进行确定,在确定目标内核对象为隐藏对象后即可将隐藏对象划分为存活对象和垃圾对象,即便于对后续隐藏对象的划分。
可选的,所述运行状态包括所述目标内核对象与其他待测内核对象的逻辑连接条目;
所述基于所述运行状态判断所述目标内核对象是否具有隐藏性,包括:
判断所述逻辑连接条目是否发生变化;
若发生变化,判定所述目标内核对象具有隐藏性。
通过采用上述技术方案,目标内核对象是否具有隐藏性具体通过逻辑连接条目是否发生变化进行判断,从而便于对隐藏对象的查找。
可选的,在所述判定所述目标内核对象为所述非隐藏对象之前,包括:
通过所述目标程序,实时监视所述待测内存中所有内核对象占用的物理资源的变化;
基于所述物理资源的变化,通过所述目标程序实时捕获正在执行的执行内核对象;
判断所述目标内核对象是否为所述执行内核对象;
若所述目标内核对象为所述执行内核对象,通过预设的内部视图对所述目标内核对象进行交叉验证,检测所述目标内核对象是否被隐藏;
若所述目标内核对象被隐藏,判定所述目标内核对象为所述隐藏对象;
若所述目标内核对象未被隐藏,判定所述目标内核对象为所述非隐藏对象。
通过采用上述技术方案,在判定目标内核对象为非隐藏对象之后,通过待测内存中所有内核对象占用的物理资源的变化对目标内核对象是否为隐藏对象进行进一步确认,有利于提高目标内核对象为隐藏对象的准确性。
可选的,所述基于可达性分析算法将所述隐藏对象划分为存活对象和垃圾对象,包括:
将预设的根对象作为起始节点集,并通过所述可达性分析算法搜索所述起始节点集的引用关系;
基于所述引用关系获取所述目标内核对象与所述起始节点集的引用链;
基于所述引用链将所述隐藏对象划分为存活对象和垃圾对象。
通过采用上述技术方案,存活对象和垃圾对象通过可达性分析算法进行划分,提高了对存活对象和垃圾对象划分的准确性;除此之外,存活对象和垃圾对象的划分有利于后续对垃圾对象进行回收。
可选的,所述引用链包括强引用链和弱引用链;
所述基于所述引用链将所述隐藏对象划分为存活对象和垃圾对象,包括:
若所述引用链为强引用链,判定所述隐藏对象为所述存活对象;
若所述引用链为弱引用链,判断所述目标内核对象是否执行过预设的测试方法;
若执行过,对所述目标内核对象进行标记,并判定所述隐藏对象为所述垃圾对象。
通过采用上述技术方案,对目标内核对象进行两次标记,第一次标记为初始标记,第二次为最终标记,用于提高隐藏对象为垃圾对象的判定准确性。
可选的,所述回收所述垃圾对象以释放所述待测内存,包括:
若判定所述隐藏对象为所述垃圾对象,将所述垃圾对象存储于预设的存储区;
判断所述存储区存储的垃圾对象的对象数量是否超过预设的数量阈值;
若超过所述数量阈值,获取每个所述垃圾对象的创建时间;
基于每个所述垃圾对象的创建时间对所述垃圾对象进行回收。
通过采用上述技术方案,回收垃圾对象首先需比较对象数量是否超过数量阈值,并在超过数量阈值后基于每个垃圾对象的创建时间对垃圾对象进行回收,无需回收全部的垃圾对象,以有效避免对后续可能存在复活机会的垃圾对象的误回收。
可选的,所述基于每个所述垃圾对象的创建时间对所述垃圾对象进行回收,包括:
获取所述对象数量与所述数量阈值的数量差值;
对所有垃圾对象按照所述创建时间的时间降序进行排序,并对所述垃圾对象逐一进行编号,所述编号为1、2、3……、n;所述n为大于0的正整数;
将大于所述数量阈值的编号对应的垃圾对象进行回收。
通过采用上述技术方案,仅对大于数量阈值的编号对应的垃圾对象进行回收,即将时间久远的垃圾对象进行回收,有效降低了内存泄漏的概率。
第二方面,本申请提供的一种智能终端采用如下的技术方案:
一种智能终端,包括存储器、处理器及存储在存储器中并能够在处理器上运行的计算机程序,所述处理器加载并执行计算机程序时,采用了上述的基于对象隐藏的内存优化方法。
通过采用上述技术方案,通过将上述的基于对象隐藏的内存优化方法生成计算机程序,并存储于存储器中,以被处理器加载并执行,从而,根据存储器及处理器制作智能终端,方便使用。
第三方面,本申请提供的一种计算机可读存储介质采用如下的技术方案:
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,采用了上述的基于对象隐藏的内存优化方法。
通过采用上述技术方案,通过将上述的基于对象隐藏的内存优化方法生成计算机程序,并存储于计算机可读存储介质中,以被处理器加载并执行,通过计算机可读存储介质,方便计算机程序的可读及存储。
综上所述,本申请具有以下至少一种有益技术效果:
1.将为垃圾对象的隐藏对象进行回收,从而便于在CPU长时间运行并使用时,实时释放待测内存,同时亦不影响正常内核对象的运行,有效降低了内存泄漏的概率。
2.在判定目标内核对象为非隐藏对象之后,通过待测内存中所有内核对象占用的物理资源的变化对目标内核对象是否为隐藏对象进行进一步确认,有利于提高目标内核对象为隐藏对象的准确性。
3.回收垃圾对象首先需比较对象数量是否超过数量阈值,并在超过数量阈值后基于每个垃圾对象的创建时间对垃圾对象进行回收,无需回收全部的垃圾对象,以有效避免对后续可能存在复活机会的垃圾对象的误回收。
附图说明
图1是本申请实施例一种基于对象隐藏的内存优化方法的其中一种实施方式的流程示意图。
图2是本申请实施例一种基于对象隐藏的内存优化方法的其中一种实施方式的流程示意图。
图3是本申请实施例一种基于对象隐藏的内存优化方法的其中一种实施方式的流程示意图。
图4是本申请实施例一种基于对象隐藏的内存优化方法的其中一种实施方式的流程示意图。
图5是本申请实施例一种基于对象隐藏的内存优化方法的其中一种实施方式的流程示意图。
图6是本申请实施例一种基于对象隐藏的内存优化方法的其中一种实施方式的流程示意图。
图7是本申请实施例一种基于对象隐藏的内存优化方法的其中一种实施方式的流程示意图。
图8是本申请实施例一种基于对象隐藏的内存优化方法的其中一种实施方式的流程示意图。
具体实施方式
以下结合附图1至8对本申请作进一步详细说明。
本申请实施例公开一种基于对象隐藏的内存优化方法。
参照图1,一种基于对象隐藏的内存优化方法包括如下步骤:
S101、基于预设的目标程序对待测内存中的目标内核对象实时进行监视,得到监视结果;监视结果包括隐藏对象和非隐藏对象。
目标程序用于监视目标内核对象。具体的,目标程序通过对目标内核对象的运行状态进行监视,以判断目标内核对象是否为隐藏对象。隐藏对象指通过信息隐藏技术来实现对象自身的隐藏使其不容易被发现的对象,例如深度图像识别对象分为可见对象和隐藏对象部分。非隐藏对象即为可见对象,顾名思义,为无需隐藏即公开的对象。
本实施例中目标程序为由代码组成的指令且目标程序为预设。
S102、若监视结果为隐藏对象,基于可达性分析算法将隐藏对象划分为存活对象和垃圾对象。
可达性分析算法用于标记存活对象。基于可达性分析算法对存活对象进行标记的步骤如下:首先定义一组GC ROOT为起点,从起点开始向下搜索,其中搜索过程中走过的路径称为引用链,若一个对象到GC ROOT没有任何引用链相连,则判定此对象为垃圾对象;反之,若一个对象到GC ROOT有引用链相连,则判定此对象为存活对象。由以上可知,可达性分析算法的原理为:从GC root根开始,向下直接或者间接找到对象,称为对象可达,反之对象不可达。直接或间接可达的对象,即被称为存活对象。
具体的,可作为GC ROOT的对象包括:1.栈中引用的对象2.静态变量、常量引用的对象3.本地方法栈native方法引用的对象。内核对象为静态分配的静态对象。
S103、回收垃圾对象以释放待测内存。
在识别到垃圾对象后即对垃圾对象进行回收以释放内存,降低内存泄漏的概率。内存泄漏指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,从而导致程序运行速度减慢甚至系统崩溃等严重后果。
本实施例的实施原理为:将为垃圾对象的隐藏对象进行回收,从而便于在CPU长时间运行并使用时,实时释放待测内存,同时亦不影响正常内核对象的运行,有效降低了内存泄漏的概率。
在图1所示实施例的步骤S101中,可通过目标程序对目标内核对象的运行状态进行监视,以判断隐藏对象和非隐藏对象。具体通过图2所示实施方式进行详细说明。
参照图2,基于预设的目标程序对目标内核对象进行监视,得到监视结果,包括如下步骤:
S201、通过目标程序实时监视目标内核对象的运行状态。
由步骤S101可知,目标程序通过对目标内核对象的运行状态进行监视,以判断目标内核对象是否为隐藏对象。具体的,运行状态指目标内核对象与其他内核对象的逻辑连接关系。逻辑连接关系分为四种,分别为关联关系、依赖关系、聚集关系和一般化。
关联关系指目标内核对象与其他对象之间的引用关系,常见的有一对多,一对一,多对多,多对一的关系。关联关系还分为双向关联与单向关联;依赖关系指的是类之间的访问关系,如果类A需要访问类B的方法,或者类A负责实例化类B,就可以说类A依赖于类B;聚集关系指整体与部分之间的关系,例如:人与手即为聚集关系;一般化指的是类之间的继承关系。
S202、基于运行状态判断目标内核对象是否具有隐藏性。
若目标内核对象与其他内核对象之间的逻辑连接关系不变,则表明目标内核对象不具有隐藏性,故可基于运行状态判断目标内核对象是否具有隐藏性。
S203、若具有隐藏性,判定目标内核对象为隐藏对象。
S204、若不具有隐藏性,判定目标内核对象为非隐藏对象。
区分目标内核对象是否为隐藏对象只需判断目标内核对象是否具有隐藏性即可。
需要说明的是,步骤S201至步骤S204仅适用于识别基于DKOM技术实现的隐藏对象,并不适用于识别非基于DKOM技术实现的隐藏对象。
DKOM(Direct Kernel Object Manipulation)技术为直接基于内核对象操作的技术。隐藏进程主要关注的关键数据结构是:进程的EPROCESS结构与线程的ETHREAD结构、链表(如进程、线程链表与CPU的调度链表)等等。DKOM通过操作这些数据结构来实现对内核对象的隐藏。
本实施方式提供的基于对象隐藏的内存优化方法,目标内核对象是否为隐藏对象通过目标内核对象的运行状态进行确定,在确定目标内核对象为隐藏对象后即可将隐藏对象划分为存活对象和垃圾对象,即便于对后续隐藏对象的划分。
在图2所示实施方式的步骤S202中,运行状态包括目标内核对象与其他待测内核对象的逻辑连接条目,可通过判断逻辑连接条目是否发生变化进而判断目标内核对象是否具有隐藏性。具体通过图3所示实施方式进行详细说明。
参照图3,运行状态包括目标内核对象与其他待测内核对象的逻辑连接条目;
基于运行状态判断目标内核对象是否具有隐藏性,包括如下步骤:
S301、判断逻辑连接条目是否发生变化。
由步骤S202可知,若目标内核对象与其他内核对象之间的逻辑连接关系不变,则表明目标内核对象不具有隐藏性,举例说明,若目标内核对象与其他待测内核对象的逻辑连接关系即逻辑连接条目从关联关系变为依赖关系,则表明逻辑连接条目发生变化,此时目标内核对象即具有隐藏性。若目标内核对象与其他待测内核对象的逻辑连接关系即逻辑连接条目始终为依赖关系,则表明逻辑连接条目未发生变化,此时目标内核对象不具有隐藏性。
S302、若发生变化,判定目标内核对象具有隐藏性。
本实施方式提供的基于对象隐藏的内存优化方法,目标内核对象是否具有隐藏性具体通过逻辑连接条目是否发生变化进行判断,从而便于对隐藏对象的查找。
在图2所示实施方式的步骤S204后,在目标内核对象不具有隐藏性时,可对目标内核对象进行第二次验证,已验证目标内核对象是否为隐藏对象。具体通过图4所示实施方式进行详细说明。参照图4,在判定目标内核对象为非隐藏对象之前,包括如下步骤:
S401、通过目标程序,实时监视待测内存中所有内核对象占用的物理资源的变化。
由于步骤S201至步骤S204仅适用于识别基于DKOM技术实现的隐藏对象,故步骤S401至步骤S406适用于识别非DKOM技术实现的隐藏对象。
目标程序用于监视内核对象占用的物理资源。本实施例中,物理资源指内核对象的语义视图,语义视图用于为报表使用语义映射时提供可视化操作。目标程序为实时隐藏监视器Monitor。
由于采用非DKOM技术隐藏进程并不更改进程本身,而是通过重构语义视图实现隐藏,故若物理资源发生变化,表明内核对象可能为隐藏对象。
S402、基于物理资源的变化,通过目标程序实时捕获正在执行的执行内核对象。
若内核对象占用的物理资源发生变化,此时目标程序则补货正在执行的执行内核对象。本实施例中,执行内核对象为进程或模块。
S403、判断目标内核对象是否为执行内核对象。
若目标内核对象为执行内核对象,此时可通过预设的虚假语义视图验证目标内核对象是否为隐藏对象。
S404、若目标内核对象为执行内核对象,通过预设的内部视图对目标内核对象进行交叉验证,检测目标内核对象是否被隐藏。
若目标内核对象为执行内核对象,此时则通过预设的内部视图对目标内核对象进行交叉验证,以判断目标内核对象是否被隐藏。
虚拟机管理器是一个小型软件层,支持多个操作系统相互独立地并行运行,共享相同的物理计算资源。多个操作系统采用虚拟机的形式,即为在虚拟机管理器中模拟整个计算硬件环境的文件。虚拟机管理器也称为虚拟机监控器,用于管理相互独立运行的虚拟机。当前执行主体为虚拟机管理器管理的其中一个虚拟机,虚拟机管理器可监视当前执行主体的目标内核对象。
内部视图为目标程序事先植入至当前执行主体的虚假进程语义视图,用于判断目标内核对象是否为隐藏对象。具体的,目标程序运行前首先向当前执行主体植入进程语义视图构建模块,进程语义视图构建模块收到视图更新指令后利用当前执行主体的内部指令构建虚假进程语义视图。
若目标内核对象非执行内核对象,表明目标内核对象为非隐藏对象。
若目标内核对象的语义视图在通过虚假进程语义视图的验证后,获取到被隐藏的进程,表明目标内核对象被隐藏;反之,若目标内核对象的语义视图在通过虚假进程语义视图的验证后,未获取到被隐藏的进程,表明目标内核对象未被隐藏。
S405、若目标内核对象被隐藏,判定目标内核对象为隐藏对象。
S406、若目标内核对象未被隐藏,判定目标内核对象为非隐藏对象。
将被隐藏的目标内核对象判定为隐藏对象,将未被隐藏的目标内核对象判定为非隐藏对象。
本实施方式提供的基于对象隐藏的内存优化方法,在判定目标内核对象为非隐藏对象之后,通过待测内存中所有内核对象占用的物理资源的变化对目标内核对象是否为隐藏对象进行进一步确认,有利于提高目标内核对象为隐藏对象的准确性。
在图1所示实施例的步骤S102中,可达性分析算法用于获取目标内核对象的引用关系,根据引用关系即可将隐藏对象划分为存活对象和垃圾对象。具体通过图5所示实施方式进行详细说明。
参照图5,基于可达性分析算法将隐藏对象划分为存活对象和垃圾对象,包括如下步骤:
S501、将预设的根对象作为起始节点集,并通过可达性分析算法搜索起始节点集的引用关系。
由步骤S102可知,可达性分析算法用于标记存活对象。基于可达性分析算法对存活对象进行标记的步骤如下:首先定义一组GC ROOT为起点,从起点开始向下搜索,其中搜索过程中走过的路径称为引用链,若一个对象到GC ROOT没有任何引用链相连,则判定此对象为垃圾对象;反之,若一个对象到GC ROOT有引用链相连,则判定此对象为存活对象。由以上可知,可达性分析算法的原理为:从GC root根开始,向下直接或者间接找到对象,称为对象可达,反之对象不可达。直接或间接可达的对象,即被称为存活对象。GC ROOT即为根对象,本实施例中,起始节点集的引用关系为内核对象与起始节点集间接或直接的引用关系。
S502、基于引用关系获取目标内核对象与起始节点集的引用链。
引用链表示目标内核对象与起始节点集直接或间接的引用关系。在获取到引用关系后,即可获取目标内核对象与起始节点集的引用链。
S503、基于引用链将隐藏对象划分为存活对象和垃圾对象。
本实施例中,引用链分为强引用链和弱引用链,若引用链为强引用链,则判定隐藏对象为存活对象,若引用链为弱引用链,则表明隐藏对象可能为垃圾对象,需对其进行进一步确认。需要说明的是,若目标内核对象与起始节点集无引用链,判定隐藏对象为垃圾对象。
本实施方式提供的基于对象隐藏的内存优化方法,存活对象和垃圾对象通过可达性分析算法进行划分,提高了对存活对象和垃圾对象划分的准确性;除此之外,存活对象和垃圾对象的划分有利于后续对垃圾对象进行回收。
在图5所示实施方式的步骤S503中,可通过引用链的强弱将隐藏对象划分为存活对象和垃圾对象。具体通过图6所示实施方式进行详细说明。
参照图6,引用链包括强引用链和弱引用链;
基于引用链将隐藏对象划分为存活对象和垃圾对象,包括如下步骤:
S601、若引用链为强引用链,判定隐藏对象为存活对象。
S602、若引用链为弱引用链,判断目标内核对象是否执行过预设的测试方法。
测试方法为预设的finalize方法,当对象被回收时,系统自动调用该对象的finalize方法,使子类可以重写该方法,用于释放资源,故finalize方法为使对象复活的方法。若目标内核对象执行过测试方法,则表明目标内核对象已被复活过,且不可能再被复活,此时判定此目标内核对象为垃圾对象;反之,若目标内核对象未执行过测试方法,则表明目标内核对象未被复活过,此时判定此目标内核对象为存活对象。
S603、若执行过,对目标内核对象进行标记,并判定隐藏对象为垃圾对象。
若目标内核对象执行过测试方法,则对目标内核对象进行标记,用于表示目标内核对象为弱引用链下的垃圾对象。
若目标内核对象未执行过测试方法,则判定此目标内核对象为存活对象。
本实施方式提供的基于对象隐藏的内存优化方法,对目标内核对象进行两次标记,第一次标记为初始标记,第二次为最终标记,用于提高隐藏对象为垃圾对象的判定准确性。
在图1所示实施例的步骤S103中,仅对隐藏对象中的垃圾对象进行回收。具体通过图7所示实施方式进行详细说明。
参照图7,回收垃圾对象以释放待测内存,包括如下步骤:
S701、若判定隐藏对象为垃圾对象,将垃圾对象存储于预设的存储区。
存储区预设于待测内存内,用于存储垃圾对象。
S702、判断存储区存储的垃圾对象的对象数量是否超过预设的数量阈值。
若存储区存储的垃圾对象的对象数量超过数量阈值,表明需对垃圾对象进行回收;若存储区存储的垃圾对象的对象数量未超过数量阈值,即小于或等于数量阈值,表明无需对垃圾对象进行回收。
S703、若超过数量阈值,获取每个垃圾对象的创建时间。
S704、基于每个垃圾对象的创建时间对垃圾对象进行回收。
若对象数量超过数量阈值,在回收垃圾对象前,需获取每个垃圾对象的创建时间,并根据创建时间回收垃圾对象。本实施例中,创建时间最早的垃圾对象被最先进行回收。
本实施方式提供的基于对象隐藏的内存优化方法,回收垃圾对象首先需比较对象数量是否超过数量阈值,并在超过数量阈值后基于每个垃圾对象的创建时间对垃圾对象进行回收,无需回收全部的垃圾对象,以有效避免对后续可能存在复活机会的垃圾对象的误回收。
在图7所示实施方式的步骤S704中,可首先对创建时间进行排序,并在排序后筛选出超过数量阈值的垃圾对象并回收。具体通过图8所示实施方式进行详细说明。
参照图8,基于每个垃圾对象的创建时间对垃圾对象进行回收,包括如下步骤:
S801、获取对象数量与数量阈值的数量差值。
举例说明,若对象数量为20,数量阈值为5,则数量差值为20-5
=15,表明需对15个垃圾对象进行回收。
S802、对所有垃圾对象按照创建时间的时间降序进行排序,并对垃圾对象逐一进行编号,编号为1、2、3……、n;n为大于0的正整数。
在得到数量差值后,即按照时间降序对创建时间进行排序,即编号越靠前的垃圾对象的创建时间越晚。
S803、将大于数量阈值的编号对应的垃圾对象进行回收。
基于步骤S801进行举例说明,若n为20,数量阈值为5,则表明编号6、7、8……、20的垃圾对象均需被回收。
本实施方式提供的基于对象隐藏的内存优化方法,仅对大于数量阈值的编号对应的垃圾对象进行回收,即将时间久远的垃圾对象进行回收,有效降低了内存泄漏的概率。
本申请实施例还公开一种智能终端,包括存储器、处理器以及存储在存储器中并能够在处理器上运行的计算机程序,其中,处理器执行计算机程序时,采用了上述实施例中的基于对象隐藏的内存优化方法。
其中,智能终端可以采用台式电脑、笔记本电脑或者云端服务器等计算机设备,并且,智能终端包括但不限于处理器以及存储器,例如,智能终端还可以包括输入输出设备、网络接入设备以及总线等。
其中,处理器可以采用中央处理单元(CPU),当然,根据实际的使用情况,也可以采用其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,通用处理器可以采用微处理器或者任何常规的处理器等,本申请对此不做限制。
其中,存储器可以为智能终端的内部存储单元,例如,智能终端的硬盘或者内存,也可以为智能终端的外部存储设备,例如,智能终端上配备的插接式硬盘、智能存储卡(SMC)、安全数字卡(SD)或者闪存卡(FC)等,并且,存储器还可以为智能终端的内部存储单元与外部存储设备的组合,存储器用于存储计算机程序以及智能终端所需的其他程序和数据,存储器还可以用于暂时地存储已经输出或者将要输出的数据,本申请对此不做限制。
其中,通过本智能终端,将上述实施例中的基于对象隐藏的内存优化方法存储于智能终端的存储器中,并且,被加载并执行于智能终端的处理器上,方便使用。
本申请实施例还公开一种计算机可读存储介质,并且,计算机可读存储介质存储有计算机程序,其中,计算机程序被处理器执行时,采用了上述实施例中的基于对象隐藏的内存优化方法。
其中,计算机程序可以存储于计算机可读介质中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间件形式等,计算机可读介质包括能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM)、随机存取存储器(RAM)、电载波信号、电信信号以及软件分发介质等,需要说明的是,计算机可读介质包括但不限于上述元器件。
其中,通过本计算机可读存储介质,将上述实施例中的基于对象隐藏的内存优化方法存储于计算机可读存储介质中,并且,被加载并执行于处理器上,以方便上述方法的存储及应用。
以上均为本申请的较佳实施例,并非依此限制本申请的保护范围,故:凡依本申请的结构、形状、原理所做的等效变化,均应涵盖于本申请的保护范围之内。
Claims (10)
1.一种基于对象隐藏的内存优化方法,其特征在于,包括:
基于预设的目标程序对待测内存中的目标内核对象实时进行监视,得到监视结果;所述监视结果包括隐藏对象和非隐藏对象;
若所述监视结果为所述隐藏对象,基于可达性分析算法将所述隐藏对象划分为存活对象和垃圾对象;
回收所述垃圾对象以释放所述待测内存。
2.根据权利要求1所述的一种基于对象隐藏的内存优化方法,其特征在于,所述基于预设的目标程序对目标内核对象进行监视,得到监视结果,包括:
通过所述目标程序实时监视所述目标内核对象的运行状态;
基于所述运行状态判断所述目标内核对象是否具有隐藏性;
若具有所述隐藏性,判定所述目标内核对象为所述隐藏对象;
若不具有所述隐藏性,判定所述目标内核对象为所述非隐藏对象。
3.根据权利要求2所述的一种基于对象隐藏的内存优化方法,其特征在于,所述运行状态包括所述目标内核对象与其他待测内核对象的逻辑连接条目;
所述基于所述运行状态判断所述目标内核对象是否具有隐藏性,包括:
判断所述逻辑连接条目是否发生变化;
若发生变化,判定所述目标内核对象具有隐藏性。
4.根据权利要求2所述的一种基于对象隐藏的内存优化方法,其特征在于,在所述判定所述目标内核对象为所述非隐藏对象之前,包括:
通过所述目标程序,实时监视所述待测内存中所有内核对象占用的物理资源的变化;
基于所述物理资源的变化,通过所述目标程序实时捕获正在执行的执行内核对象;
判断所述目标内核对象是否为所述执行内核对象;
若所述目标内核对象为所述执行内核对象,通过预设的内部视图对所述目标内核对象进行交叉验证,检测所述目标内核对象是否被隐藏;
若所述目标内核对象被隐藏,判定所述目标内核对象为所述隐藏对象;
若所述目标内核对象未被隐藏,判定所述目标内核对象为所述非隐藏对象。
5.根据权利要求1所述的一种基于对象隐藏的内存优化方法,其特征在于,所述基于可达性分析算法将所述隐藏对象划分为存活对象和垃圾对象,包括:
将预设的根对象作为起始节点集,并通过所述可达性分析算法搜索所述起始节点集的引用关系;
基于所述引用关系获取所述目标内核对象与所述起始节点集的引用链;
基于所述引用链将所述隐藏对象划分为存活对象和垃圾对象。
6.根据权利要求5所述的一种基于对象隐藏的内存优化方法,其特征在于,所述引用链包括强引用链和弱引用链;
所述基于所述引用链将所述隐藏对象划分为存活对象和垃圾对象,包括:
若所述引用链为强引用链,判定所述隐藏对象为所述存活对象;
若所述引用链为弱引用链,判断所述目标内核对象是否执行过预设的测试方法;
若执行过,对所述目标内核对象进行标记,并判定所述隐藏对象为所述垃圾对象。
7.根据权利要求6所述的一种基于对象隐藏的内存优化方法,其特征在于,所述回收所述垃圾对象以释放所述待测内存,包括:
若判定所述隐藏对象为所述垃圾对象,将所述垃圾对象存储于预设的存储区;
判断所述存储区存储的垃圾对象的对象数量是否超过预设的数量阈值;
若超过所述数量阈值,获取每个所述垃圾对象的创建时间;
基于每个所述垃圾对象的创建时间对所述垃圾对象进行回收。
8.根据权利要求7所述的一种基于对象隐藏的内存优化方法,其特征在于,所述基于每个所述垃圾对象的创建时间对所述垃圾对象进行回收,包括:
获取所述对象数量与所述数量阈值的数量差值;
对所有垃圾对象按照所述创建时间的时间降序进行排序,并对所述垃圾对象逐一进行编号,所述编号为1、2、3……、n;所述n为大于0的正整数;
将大于所述数量阈值的编号对应的垃圾对象进行回收。
9.一种智能终端,包括存储器、处理器及存储在存储器中并能够在处理器上运行的计算机程序,其特征在于,所述处理器加载并执行计算机程序时,采用了权利要求1至8中任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其特征在于,所述计算机程序被处理器加载并执行时,采用了权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310157285.9A CN116185889A (zh) | 2023-02-15 | 2023-02-15 | 一种基于对象隐藏的内存优化方法、智能终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310157285.9A CN116185889A (zh) | 2023-02-15 | 2023-02-15 | 一种基于对象隐藏的内存优化方法、智能终端及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116185889A true CN116185889A (zh) | 2023-05-30 |
Family
ID=86432404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310157285.9A Pending CN116185889A (zh) | 2023-02-15 | 2023-02-15 | 一种基于对象隐藏的内存优化方法、智能终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116185889A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117891616A (zh) * | 2024-03-15 | 2024-04-16 | 腾讯科技(深圳)有限公司 | 应用程序的垃圾回收方法、装置、设备及存储介质 |
-
2023
- 2023-02-15 CN CN202310157285.9A patent/CN116185889A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117891616A (zh) * | 2024-03-15 | 2024-04-16 | 腾讯科技(深圳)有限公司 | 应用程序的垃圾回收方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9787706B1 (en) | Modular architecture for analysis database | |
US10185645B2 (en) | Resource lifetime analysis using a time-travel trace | |
US8738673B2 (en) | Index partition maintenance over monotonically addressed document sequences | |
US8196116B2 (en) | Tracing objects in object-oriented programming model | |
US9811356B2 (en) | Automated software configuration management | |
US20070067359A1 (en) | Centralized system for versioned data synchronization | |
US11994988B2 (en) | Multi-ring shared, traversable, and dynamic advanced database | |
CN110362301B (zh) | 一种终端应用行为反射的处理方法 | |
CN109634802B (zh) | 进程监控方法及终端设备 | |
GB2513528A (en) | Method and system for backup management of software environments in a distributed network environment | |
US11693742B2 (en) | Backing up data for a namespace assigned to a tenant | |
US20200278877A1 (en) | Optimization of multi-layered images | |
US20200342008A1 (en) | System for lightweight objects | |
US11416614B2 (en) | Statistical detection of firmware-level compromises | |
CN116185889A (zh) | 一种基于对象隐藏的内存优化方法、智能终端及存储介质 | |
US20070067358A1 (en) | Method and apparatus for restoring versionable objects | |
US20200272441A1 (en) | Systems and methods for mapping software applications interdependencies | |
CN112612537A (zh) | 配置数据缓存方法、装置、设备及存储介质 | |
US6233621B1 (en) | System and method for space efficient hashcode allocation | |
US20210303370A1 (en) | Scaling virtualization resource units of applications | |
US20140189715A1 (en) | Conversion of lightweight object to a heavyweight object | |
GB2428321A (en) | Versioning objects in a virtual machine | |
WO2021096346A1 (en) | A computer-implemented system for management of container logs and its method thereof | |
Horváth et al. | Code generation in serializers and comparators of Apache Flink | |
Taamneh et al. | Parallel and fault-tolerant k-means clustering based on the actor model |
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 |