CN109710396B - 一种信息采集及内存释放的方法及装置 - Google Patents
一种信息采集及内存释放的方法及装置 Download PDFInfo
- Publication number
- CN109710396B CN109710396B CN201711013628.5A CN201711013628A CN109710396B CN 109710396 B CN109710396 B CN 109710396B CN 201711013628 A CN201711013628 A CN 201711013628A CN 109710396 B CN109710396 B CN 109710396B
- Authority
- CN
- China
- Prior art keywords
- state
- target
- address
- thermal
- memory
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- 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/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
-
- 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
-
- 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
Abstract
本申请提供了一种信息采集的方法,该方法包括:在目标程序的运行生命周期中目标方法的调用次数增加时,根据所述目标方法的方法标识获取所述目标方法的调用次数;根据所述目标方法的调用次数、第一阈值和第二阈值,记录所述目标方法的方法信息并设置所述目标方法的方法状态,其中,所述方法状态用于指示与所述方法状态对应的所述目标程序调用的方法的状态,所述方法状态为第一状态或第二状态,所述第一状态对应所述第一阈值,所述第二状态对应所述第二阈值,所述第一阈值与所述第二阈值为非0正整数,所述第二阈值大于0且小于所述第一阈值。
Description
技术领域
本发明涉及信息处理领域,尤其涉及一种信息采集及内存释放的方法和装置。
背景技术
Android操作系统的每一个应用程序是运行在独立的ART(安卓系统虚拟机,Android Runtime)实例上,在应用程序运行过程中,首先加载oat文件到内存执行其中机器码,当出现所要调用的方法不在oat文件的情况,ART会加载该方法对应的dex文件到内存(RAM,RamdomAccessMemory)并通过Interpreter(ART的解释器)对其中的字节码进行解释执行;当一个方法被调用次数满足一个阈值时,会将这个方法的方法信息记录到profile文件中,在满足一定条件下(如锁屏待机并充电四个小时),ART会对profile文件中记录的方法信息对应的方法的dex文件做AOT(安卓Java程序预先编译技术,Ahead Of Time)编译,并更新oat文件,可以加快下次程序启动和运行速度。
由上述流程可知,程序的代码段主要是由翻译或编译得到的机器码组成,随着程序的运行,ART会通过文件映射的方式将该程序所要调用的方法对应的dex文件和oat文件中的代码不断地加载到内存,因此程序对内存的需求也在不断增加,导致同时运行的程序越多,消耗的内存越大,系统可用内存越少。
为了减少应用程序的代码段内存的消耗,android O版新发布了一项重要特性Dexlayout,在ART对dex文件进行speed-profile形式的AOT编译过程中,基于profile文件中的信息对dex文件的布局做重排优化,布局优化后会生成一个新的dex文件,其中的class和method布局发生了改变,热点class和method被集中到各自部分的前部,而冷的class和method则被集中到尾部,即按照冷热对文件内容进行区分处理。Dexlayout将热点代码集中在一起,减少新dex文件中不常用到的代码被映射到内存,优化dex文件内存占用。
从上面可以看出profile文件记录的方法信息对AOT编译有着重要影响,而现有技术中profile文件中记录的方法信息的方法有待进一步优化。
发明内容
针对现有技术中存在的技术问题,本申请提供了一种信息采集的方法。
第一方面,本申请提供了一种信息采集的方法,该方法包括:在目标程序的运行生命周期中目标方法的调用次数增加时,根据所述目标方法的方法标识获取所述目标方法的调用次数,所述目标程序为运行于所述操作系统中的任一程序,所述目标方法为所述目标程序调用的至少一个方法中的任一方法,所述调用次数用于指示在所述目标程序的运行周期中所述目标方法的当前被调用次数;根据所述目标方法的调用次数、第一阈值和第二阈值,记录所述目标方法的方法信息并设置所述目标方法的方法状态,其中,所述方法状态用于指示与所述方法状态对应的所述目标程序调用的方法的状态,所述方法状态为第一状态或第二状态,所述第一状态对应所述第一阈值,所述第二状态对应所述第二阈值,所述第一阈值与所述第二阈值为非0正整数,所述第二阈值大于0且小于所述第一阈值,第一阈值和第二阈值均是可调的,在实现方式上,可以是保留阈值调整接口用于根据用户需求或应用场景对第一阈值和第二阈值进行调整设置。针对方法的调用次数设置两个不同阈值,可以实现记录的方法数量增加的同时对记录的方法进行分级,能够优化信息采集。
第一方面的一个可能的实现方式,根据所述目标方法的调用次数、第一阈值和第二阈值,记录所述目标方法的方法信息并设置所述目标方法的方法状态包括:判断所述目标方法的调用次数是否大于所述第一阈值;若所述目标方法的调用次数大于所述第一阈值,则记录所述目标方法的方法信息并设置所述目标方法的方法状态为所述第一状态;否则,判断所述目标方法的调用次数是否大于所述第二阈值;若所述目标方法的调用次数大于所述第二阈值,则记录所述目标方法的方法信息并设置所述目标方法的方法状态为所述第二状态。
第一方面的一个可能的实现方式,根据所述目标方法的调用次数、第一阈值和第二阈值,记录所述目标方法的方法信息并设置所述目标方法的方法状态包括:判断所述目标方法的调用次数是否大于第二阈值;若所述目标方法的调用次数大于所述第二阈值,判断所述目标方法的调用次数是否大于所述第一阈值;若所述目标方法的调用次数大于所述第一阈值,则记录所述目标方法的方法信息并设置所述目标方法的方法状态为所述第一状态;否则,则记录所述目标方法的方法信息并设置所述目标方法的方法状态为所述第二状态。
第一方面的一个可能的实现方式,在所述根据所述目标方法的调用次数、第一阈值和第二阈值,记录所述目标方法的方法信息并设置所述目标方法的方法状态之前,还包括:根据所述目标方法的方法标识确定所述目标方法的方法状态;根据确定的所述目标方法的方法状态,该方法还包括:不存在所述目标方法的方法状态,则执行所述根据所述目标方法的调用次数、第一阈值和第二阈值,记录所述目标方法的方法信息并设置所述目标方法的方法状态;或者,所述目标方法的方法状态为所述第二状态,则判断所述目标方法的调用次数是否大于所述第一阈值;若所述目标方法的调用次数大于所述第一阈值,则将所述目标方法的方法状态由所述第二状态设置为所述第一状态。
第一方面的一个可能的实现方式,所述设置所述目标方法的方法状态包括:调用状态设置函数将所述目标方法的方法标识和对应的方法状态写入共享映射,所述共享映射用于记录所述方法标识与所述方法状态的对应关系。
第一方面的一个可能的实现方式,所述根据所述目标方法的方法标识确定所述目标方法的方法状态包括:调用状态返回函数根据所述目标方法的方法标识从共享映射中获取所述目标方法的方法状态,所述共享映射用于记录所述方法标识与所述方法状态的对应关系;根据所述状态返回函数返回的结果确定所述目标方法的方法状态。
第一方面的一个可能的实现方式,所述将所述目标方法的方法状态由所述第二状态设置为所述第一状态包括:调用状态设置函数将所述目标方法的方法状态由所述第二状态设置为所述第一状态。
第一方面的一个可能的实现方式,所述记录所述目标方法的方法信息包括:将所述目标方法的方法信息写入所述目标程序对应的profile文件,所述profile文件包括至少一个方法信息。通过该方法存入profile文件的方法信息在增加的同时并将存入的方法信息进行分级。
第一方面的一个可能的实现方式,获取所述profile文件中热方法的起始地址和结束地址,所述热方法用于指示所述目标程序对应的profile文件中方法信息对应的方法;根据所述热方法的起始地址和结束地址得到冷方法的起始地址和结束地址,所述冷方法用于指示对应的方法信息未被写入所述profile文件中的所述目标程序调用的方法;根据所述冷方法的起始地址和结束地址释放代所述冷方法的代码所占内存。可选的,所述热方法用于指示所述profile文件中方法信息对应的所述方法状态为所述第一状态的方法,所述冷方法用于指示对应的方法信息未被写入所述profile文件中的所述目标程序调用的方法和所述profile文件中方法信息对应的所述方法状态为第二状态的方法。通过profile文件中热方法的起始地址和结束地址可以精准定位到需要释放的冷方法的代码所占内存,能够在保持运行的程序流畅运行的提前下释放多余的内存占用,也可以提高新程序启动速度。
第一方面的一个可能的实现方式,所述获取所述profile文件中热方法的起始地址和结束地址包括:获取所述热方法的方法标识;根据所述热方法的方法标识获取所述热方法的起始地址;根据所述热方法的起始地址得到所述热方法的头部;根据所述热方法的头部计算所述热方法的代码所占内存的大小;根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址。这只是本申请实施例提供的一种获取方法的起始地址和结束地址的技术方案,本申请实施例对具体获取方法的起始地址和结束地址不做限制。
第一方面的一个可能的实现方式,在所述获取所述热方法的方法标识之后,包括:将所述热方法的方法标识存入第一集合;所述根据所述热方法的方法标识获取所述热方法的起始地址,包括:遍历所述第一集合根据所述热方法的方法标识获取所述热方法的起始地址并将所述热方法的起始地址按照大小存入第二集合;在所述根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址之后,包括:将所述热方法的结束地址按照大小存入第三集合。将获取的全部热方法的起始地址和结束地址按大小存入相应集合,便于遍历地提取相对应的起始地址和结束地址。
第一方面的一个可能的实现方式,所述根据所述热方法的起始地址和结束地址得到冷方法的起始地址和结束地址包括:根据所述第二集合和所述三集合得到所述冷方法的起始地址和结束地址。
第一方面的一个可能的实现方式,所述根据所述冷方法的起始地址和结束地址释放代所述冷方法的代码所占内存包括:根据所述冷方法的起始地址和结束地址计算所述冷方法的代码所占内存的大小;根据所述操作系统中单一内存页大小、所述冷方法的代码所占内存的大小以及所述冷方法的起始地址和结束地址确定冷方法内存页,所述冷方法内存页为代码段内存由所述冷方法占满的内存页;释放所述冷方法内存页。
第一方面的一个可能的实现方式,还包括:调用第一函数建议所述操作系统内核释放所述目标程序调用的方法的代码所占内存;获取热方法的起始地址和结束地址,所述热方法用于指示所述profile文件中方法信息对应的方法或所述profile文件中方法信息对应的所述方法状态为所述第一状态的方法;根据所述热方法的代码所占内存的大小以及所述热方法的起始地址和结束地址释放所述目标程序调用的方法所占的代码段内存。通过热方法所占内存页避免被释放,并将违背访问的冷方法内存页释放,能够在保持运行的程序流畅运行的提前下释放多余的占用,也可以提高新程序启动速度。
第一方面的一个可能的实现方式,所述获取热方法的起始地址和结束地址包括:获取所述热方法的方法标识;根据所述热方法的方法标识获取所述热方法的起始地址;根据所述热方法的起始地址得到所述热方法的头部;根据所述热方法的头部计算所述热方法的代码所占内存的大小;根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址。
第一方面的一个可能的实现方式,所述根据所述热方法的代码所占内存的大小以及所述热方法的起始地址和结束地址释放所述目标程序调用的方法所占的代码段内存包括:根据所述热方法的代码所占内存的大小和所述操作系统的单一内存页大小判断所述热方法是否存在跨页,所述跨页用于指示某一方法占至少两个内存页的代码段内存;若所述热方法存在跨页,则访问所述热方法的起始地址、中间地址和结束地址,并释放未访问的所述目标程序调用的方法所占的内存页,其中,所述中间地址用于指示同一方法的起始地址距离N个所述操作系统的单一内存页大小的地址,所述N为非0正整数;若所述热方法不存在跨页,则访问所述热方法的起始地址和结束地址,并释放未访问的所述目标程序调用的方法所占内存页。
第一方面的一个可能的实现方式,还包括:将所述profile文件中所述方法状态为所述第一状态的方法的方法信息进行预先编译技术AOT编译。
本申请实施例提供的方法,不仅可以采集被调用频率高的方法的方法信息,还对采集到的方法信息对应的方法进行分级,优化了采集方法的方法信息,在不增加方法信息编译成机器可识别代码的工作量的前提下采集更多的被调用方法的方法信息;并且,可以定位具体需要释放的被冷方法代码所占的内存页,保证程序运行流畅的前提下能偶精准释放内存,或者,在保持程序运行流畅的前提下精准释放冷方法(调用频率相对较低的方法)的代码占用的内存。
第二方面,本申请提供了一种信息采集装置,该装置包括:调用次数获取模块,用于在目标程序的运行生命周期中目标方法的调用次数增加时,根据所述目标方法的方法标识获取所述目标方法的调用次数,其中,所述目标程序为运行于操作系统中的任一程序,所述目标方法为所述目标程序调用的至少一个方法中的任一方法,所述调用次数用于指示在所述目标程序的运行周期中所述目标方法的当前被调用次数;记录模块,用于根据第一阈值、第二阈值以及所述调用次数获取模块获得的所述目标方法的调用次数记录所述目标方法的方法信息,所述第一阈值与所述第二阈值为非0正整数,所述第二阈值大于0且小于所述第一阈值;状态设置模块,用于根据第一阈值、第二阈值以及所述调用次数获取模块获得的所述目标方法的调用次数设置所述目标方法的方法状态,所述方法状态用于指示与所述方法状态对应的所述目标程序调用的方法的状态,所述方法状态为第一状态或第二状态,所述第一状态对应所述第一阈值,所述第二状态对应所述第二阈值。
第二方面的一个可能的实现方式,该装置还包括:第一判断模块和第二判断模块;其中,所述第一判断模块,用于判断所述目标方法的调用次数是否大于所述第一阈值;所述第二判断模块,用于所述第一判断模块得到所述目标方法的调用次数小于或等于所述第一阈值时,判断所述目标方法的调用次数是否大于所述第二阈值;所述记录模块,具体用于所述第一判断模块判断所述目标方法的调用次数大于所述第一阈值和所述第二判断模块得到所述目标方法的调用次数大于所述第二阈值时,记录所述目标方法的方法信息;所述状态设置模块,具体用于所述第一判断模块判断所述目标方法的调用次数大于所述第一阈值时设置所述目标方法的方法状态为所述第一状态,和,所述第二判断模块得到所述目标方法的调用次数大于所述第二阈值时设置所述目标方法的方法状态为所述第二状态。
第二方面的一个可能的实现方式,该装置还包括:第三判断模块和第四判断模块;其中所述第三判断模块,用于判断所述目标方法的调用次数是否大于所述第二阈值;所述第四判断模块,用于所述第三判断模块得到所述目标方法的调用次数大于所述第二阈值时,判断所述目标方法的调用次数是否大于所述第一阈值;所述记录模块,具体用于所述第三判断模块判断所述目标方法的调用次数大于所述第二阈值时,记录所述目标方法的方法信息;所述状态设置模块,具体用于所述第四判断模块判断所述目标方法的调用次数大于所述第一阈值时设置所述目标方法的方法状态为所述第一状态,和,所述第四判断模块得到所述目标方法的调用次数小于或等于所述第一阈值时设置所述目标方法的方法状态为所述第二状态。
第二方面的一个可能的实现方式,该装置还包括:状态确定模块,用于根据所述目标方法的方法标识确定所述目标方法的方法状态。
第二方面的一个可能的实现方式,该装置还包括:第五判断模块;其中,所述第五判断模块,用于所述状态确定模块得到所述目标方法的方法状态为所述第二状态时,判断所述目标方法的调用次数是否大于所述第一阈值;所述记录模块,具体用于所述状态确定模块得到不存在所述目标方法的方法状态时记录所述目标方法的方法信息;所述状态设置模块,具体用于所述状态确定模块得到不存在所述目标方法的方法状态时设置所述目标方法的方法状态和所述第五判断模块得到所述目标方法的调用次数大于所述第一阈值时设置所述目标方法的方法状态由所述第二状态设置为所述第一状态。
第二方面的一个可能的实现方式,所述状态设置模块,具体用于调用状态设置函数将所述目标方法的方法标识和对应的方法状态写入共享映射,所述共享映射用于记录所述方法标识与所述方法状态的对应关系。
第二方面的一个可能的实现方式,所述状态确定模块具体用于:调用状态返回函数根据所述目标方法的方法标识从共享映射中获取所述目标方法的方法状态,所述共享映射用于记录所述方法标识与所述方法状态的对应关系;根据所述状态返回函数返回的结果确定所述目标方法的方法状态。
第二方面的一个可能的实现方式,所述状态设置模块具体用于调用状态设置函数将所述目标方法的方法状态由所述第二状态设置为所述第一状态。
第二方面的一个可能的实现方式,所述记录模块具体用于将所述目标方法的方法信息写入所述目标程序对应的profile文件,所述profile文件包括至少一个方法信息。
第二方面的一个可能的实现方式,该装置还包括:第一热方法地址获取模块,用于获取所述profile文件中热方法的起始地址和结束地址,所述热方法用于指示所述目标程序对应的profile文件中方法信息对应的方法;冷方法地址计算模块,用于根据所述第一热方法地址获取模块得到的所述热方法的起始地址和结束地址,计算冷方法的起始地址和结束地址,所述冷方法用于指示对应的方法信息未被写入所述profile文件中的所述目标程序调用的方法;第一内存释放模块,用于根据所述冷方法地址计算模块得到的所述冷方法的起始地址和结束地址释放代所述冷方法的代码所占内存。可选的,所述热方法用于指示所述profile文件中方法信息对应的所述方法状态为所述第一状态的方法,所述冷方法用于指示对应的方法信息未被写入所述profile文件中的所述目标程序调用的方法和所述profile文件中方法信息对应的所述方法状态为第二状态的方法。
第二方面的一个可能的实现方式,所述第一热方法地址获取模块具体用于:获取所述热方法的方法标识;根据所述热方法的方法标识获取所述热方法的起始地址;根据所述热方法的起始地址得到所述热方法的头部;根据所述热方法的头部计算所述热方法的代码所占内存的大小;根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址。
第二方面的一个可能的实现方式,所述第一热方法地址获取模块具体用于:在所述获取所述热方法的方法标识之后,将所述热方法的方法标识存入第一集合;遍历所述第一集合根据所述热方法的方法标识获取所述热方法的起始地址并将所述热方法的起始地址按照大小存入第二集合;在所述根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址之后,将所述热方法的结束地址按照大小存入第三集合。
第二方面的一个可能的实现方式,所述冷方法地址计算模块具体用于根据所述第一热方法地址获取模块得到的所述第二集合和所述三集合计算所述冷方法的起始地址和结束地址。
第二方面的一个可能的实现方式,该装置还包括;冷方法内存页模块;其中,所述冷方法内存页模块用于:根据所述冷方法地址计算模块得到的所述冷方法的起始地址和结束地址计算所述冷方法的代码所占内存的大小;根据所述操作系统中单一内存页大小、所述冷方法的代码所占内存的大小以及所述冷方法的起始地址和结束地址确定冷方法内存页,所述冷方法内存页为代码段内存由所述冷方法占满的内存页;所述第一内存释放模块具体用于释放所述冷方法内存页模块得到的所述冷方法内存页。
第二方面的一个可能的实现方式,该装置还包括:建议释放模块,用于调用第一函数建议所述操作系统内核释放所述目标程序调用的方法的代码所占内存;第二热方法地址获取模块,用于获取热方法的起始地址和结束地址,所述热方法用于指示所述profile文件中方法信息对应的方法或所述profile文件中方法信息对应的所述方法状态为所述第一状态的方法;第二内存释放模块,用于根据所述热方法的代码所占内存的大小以及所述第二热方法地址获取模块得到的所述热方法的起始地址和结束地址释放所述目标程序调用的方法所占的代码段内存。
第二方面的一个可能的实现方式,所述第二热方法地址获取模块具体用于:获取所述热方法的方法标识;根据所述热方法的方法标识获取所述热方法的起始地址;根据所述热方法的起始地址得到所述热方法的头部;根据所述热方法的头部计算所述热方法的代码所占内存的大小;
根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址。
第二方面的一个可能的实现方式,该装置还包括:跨页判断模块,用于根据所述热方法的代码所占内存的大小和所述操作系统的单一内存页大小判断所述热方法是否存在跨页,所述跨页用于指示某一方法占至少两个内存页的代码段内存;地址访问模块,用于所述跨页判断模块得到所述热方法存在跨页时访问所述热方法的起始地址、中间地址和结束地址和/或所述跨页判断模块得到所述热方法不存在跨页时访问所述热方法的起始地址和结束地址,其中,所述中间地址用于指示同一方法的起始地址距离N个所述操作系统的单一内存页大小的地址,所述N为非0正整数;所述第二内存释放模块具体用于释放所述地址访问模块未访问的所述目标程序调用的方法所占的内存页。
第二方面的一个可能的实现方式,该装置还包括:编译模块,用于将所述profile文件中所述方法状态为所述第一状态的方法的方法信息进行预先编译技术AOT编译。
本申请实施例提供的装置,不仅可以采集被调用频率高的方法的方法信息,还对采集到的方法信息对应的方法进行分级,优化了采集方法的方法信息,在不增加方法信息编译成机器可识别代码的工作量的前提下采集更多的被调用方法的方法信息;并且,可以定位具体需要释放的被冷方法代码所占的内存页,保证程序运行流畅的前提下能偶精准释放内存,或者,在保持程序运行流畅的前提下精准释放冷方法(调用频率相对较低的方法)的代码占用的内存。
第三方面,本申请提供了一种计算设备,所述计算设备包括至少一个处理器和至少一个存储介质,所述至少一个存储介质中存储有可编程指令;所述至少一个处理器调用所述可编程指令执行第一方面或第一方面的任一可能的实现方式中描述的方法。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有可编程指令,当所述可编程指令在计算机上运行时,使得计算机执行第一方面或第一方面的任一可能的实现方式中描述的方法。
第五方面,本申请提供了一种计算机程序产品,所述操作系统包括第一阈值、第二阈值、方法状态;其中,所述第二阈值大于0且小于所述第一阈值,所述方法状态用于指示一个方法的状态,所述方法状态为第一状态或第二状态,所述第一状态用于指示对应调用次数大于所述第一阈值的方法的状态,所述第二状态用于指示对应调用次数大于所述第二阈值且小于或等于所述第一阈值的方法的状态,所述调用次数为在目标程序的运行生命周期内一方法被所述目标程序调用的次数,所述目标程序为运行于所述操作系统中的任一程序。
第五方面的一种可能的实现方式,所述操作系统还包括共享映射、状态设置函数和状态返回函数;所述共享映射用于记录方法标识与所述方法状态的对应关系,所述方法标识用于指示与所述方法标识对应的方法;所述状态设置函数用于将同一方法的方法标识和方法状态写入所述共享映射或设置一方法的方法标识在所述共享映射中对应的方法状态;所述状态返回函数用于根据一方法的方法标识和所述共享映射返回对应的的方法状态。
第五方面的一种可能的实现方式,当某一方法的调用次数大于所述第一阈值,所述状态设置函数用于设置所述某一方法的方法状态为所述第一状态;或者,当某一方法的调用次数大于所述第二阈值且小于等于所述第一阈值,所述状态设置函数用于设置所述某一方法的方法状态为所述第二状态。
第六方面,本身提供了一种内存释放的方法,该方法包括:获取profile文件中热方法的起始地址和结束地址,所述热方法用于指示目标程序对应的profile文件中方法信息对应的方法;可选的,方法信息对应的方法也可以是满足预设条件的方法信息对应的方法;可选的,所述profile文件通过第一方面或第一方面的任一可能的实现方式描述的方法获得;根据所述热方法的起始地址和结束地址得到冷方法的起始地址和结束地址,所述冷方法用于指示对应的方法信息未被写入所述profile文件中的所述目标程序调用的方法;根据所述冷方法的起始地址和结束地址释放代所述冷方法的代码所占内存。
第六方面的一种可能的实现方式,所述获取所述profile文件中热方法的起始地址和结束地址包括:获取所述热方法的方法标识;根据所述热方法的方法标识获取所述热方法的起始地址;根据所述热方法的起始地址得到所述热方法的头部;根据所述热方法的头部计算所述热方法的代码所占内存的大小;根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址。
第六方面的一种可能的实现方式,在所述获取所述热方法的方法标识之后,包括:将所述热方法的方法标识存入第一集合;所述根据所述热方法的方法标识获取所述热方法的起始地址,包括:遍历所述第一集合根据所述热方法的方法标识获取所述热方法的起始地址并将所述热方法的起始地址按照大小存入第二集合;在所述根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址之后,包括:将所述热方法的结束地址按照大小存入第三集合。
第六方面的一种可能的实现方式,所述根据所述热方法的起始地址和结束地址得到冷方法的起始地址和结束地址包括:根据所述第二集合和所述三集合得到所述冷方法的起始地址和结束地址。
第六方面的一种可能的实现方式,所述根据所述冷方法的起始地址和结束地址释放代所述冷方法的代码所占内存包括:根据所述冷方法的起始地址和结束地址计算所述冷方法的代码所占内存的大小;根据所述操作系统中单一内存页大小、所述冷方法的代码所占内存的大小以及所述冷方法的起始地址和结束地址确定冷方法内存页,所述冷方法内存页为代码段内存由所述冷方法占满的内存页;释放所述冷方法内存页。
本申请实施例提供的内存释放的方法可以定位具体需要释放的被冷方法代码所占的内存页,保证程序运行流畅的前提下能偶精准释放内存。
第七方面,本身提供了一种内存释放的方法,调用第一函数建议所述操作系统内核释放所述目标程序调用的方法的代码所占内存;获取热方法的起始地址和结束地址,所述热方法用于指示所述profile文件中方法信息对应的方法;可选的,方法信息对应的方法也可以是满足预设条件的方法信息对应的方法;可选的,所述profile文件通过第一方面或第一方面的任一可能的实现方式描述的方法获得;根据所述热方法的代码所占内存的大小以及所述热方法的起始地址和结束地址释放所述目标程序调用的方法所占的代码段内存。
第七方面的一种可能的实现方式,所述获取热方法的起始地址和结束地址包括:获取所述热方法的方法标识;根据所述热方法的方法标识获取所述热方法的起始地址;据所述热方法的起始地址得到所述热方法的头部;根据所述热方法的头部计算所述热方法的代码所占内存的大小;根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址。
第七方面的一种可能的实现方式,所述根据所述热方法的代码所占内存的大小以及所述热方法的起始地址和结束地址释放所述目标程序调用的方法所占的代码段内存包括:根据所述热方法的代码所占内存的大小和所述操作系统的单一内存页大小判断所述热方法是否存在跨页,所述跨页用于指示某一方法占至少两个内存页的代码段内存;若所述热方法存在跨页,则访问所述热方法的起始地址、中间地址和结束地址,并释放未访问的所述目标程序调用的方法所占的内存页,其中,所述中间地址用于指示同一方法的起始地址距离N个所述操作系统的单一内存页大小的地址,所述N为非0正整数;若所述热方法不存在跨页,则访问所述热方法的起始地址和结束地址,并释放未访问的所述目标程序调用的方法所占内存页。
本申请实施例提供的内存释放的方法能够在保持程序运行流畅的前提下精准释放冷方法(调用频率相对较低的方法)的代码占用的内存。
第八方面,本申请提供了一种计算设备,所述计算设备包括至少一个处理器和至少一个存储介质,所述至少一个存储介质中存储有可编程指令;所述至少一个处理器调用所述可编程指令执行第六方面或第六方面的任一可能的实现方式中描述的方法;和/或,第七方面或第七方面的任一可能的实现方式中描述的方法。
第九方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有可编程指令,当所述可编程指令在计算机上运行时,使得计算机执行第六方面或第六方面的任一可能的实现方式中描述的方法;和/或,第七方面或第七方面的任一可能的实现方式中描述的方法。
附图说明
图1是本申请实施例提供的一种手机示意图;
图2是本申请实施例提供的一种采集信息的方法流程图;
图3是本申请实施例提供的一种采集信息的方法流程图;
图4是本申请实施例提供的一种采集信息的方法流程图;图5是本申请实施例提供的一种确定方法状态的方法流程图;
图6是本申请实施例提供的一种AOT编译的方法流程图;
图7是本申请实施例提供的一种内存释放的方法流程图;
图8是本申请实施例提供的一种获取热方法地址的方法流程图;
图9是本申请实施例提供的冷方法起始地址和结束地址示意图;
图10是本申请实施例提供的一种内存释放的方法流程图;
图11是本申请实施例提供的一种获取热方法地址的方法流程图;
图12是本申请实施例提供的一种判断是否跨页的方法流程图;
图13是本申请实施例提供的热方法跨页示意图;
图14是本申请实施例提供的一种终端设备示意图;
图15是本申请实施例提供的一种采集信息装置示意图;
图16是本申请实施例提供的一种采集信息装置示意图;
图17是本申请实施例提供的内存释放装置示意图;
图18是本申请实施例提供的内存释放装置示意图;
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图,对本申请的技术方案进一步地详细描述。
本申请实施例提供的信息采集的方法可应用于各种终端,该终端设备包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、移动设备(比如手机、移动电话、平板电脑、PDA、媒体播放器等等)、消费型电子设备、车载计算机,智能手表,电视机、以及其他具有显示屏幕的终端设备等等。
下面以手机为例对本发明实施例的具体实施过程进行详细阐述,下述先简单介绍手机的具体结构组成,具体如图1所示。
参阅图1所示,为本申请实施例应用的手机的硬件结构示意图。如图1所示,手机100包括显示屏幕110、处理器120以及存储器130。存储器130可用于存储计算机程序以及数据,处理器120通过运行存储在存储器130的计算机程序以及数据,从而执行手机100的各种功能应用以及数据处理。存储器130可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如图像播放功能等)等;存储数据区可存储根据手机100的使用所创建的数据(比如音频数据、电话本、图像数据等)等。此外,存储器130可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。处理器120是手机100的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器130内的软件程序和/或数据,执行手机100的各种功能和处理数据,从而对手机进行整体监控。处理器120可以包括一个或多个通用处理器,还可包括一个或多个数字信号处理器(digital signalprocessor,DSP),也可以包括一个或者多个图像信号处理器(image signal processor,ISP),用于执行相关操作,以实现本申请实施例所提供的技术方案。
显示屏幕110,用于显示由用户输入的信息或提供给用户的信息以及手机100的各种菜单界面等。可选的,显示屏幕110可以采用液晶显示器(liquid crystal display,LCD)或OLED(organic light-emitting diode,有机发光二极管)等形式来配置显示屏幕110。
手机100还可以包括射频(radio frequency,RF)电路140,RF电路140可用于收发信息或通话过程中,信号的接收和发送。通常,RF电路140包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noise amplifier,LNA)、双工器等。
手机100还可以包括一个或多个传感器150,例如图像传感器、光传感器、运动传感器等。
手机100还可以包括输入输出接口160,用于接收输入的数字信息、字符信息或接触式触摸操作/非接触式手势,以及产生与手机100的用户设置以及功能控制有关的信号输入等。具体的,输入输出接口160可包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、以及触摸屏等中的一种或多种。
除以上之外,手机100还包括给各个部件供电的电源170(比如电池),电源可以通过电源管理系统与处理器120逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。
当然,根据具体应用中的需要,上述手机100还可以包括摄像头、音频电路、扬声器等,由于这些部件不是本申请实施例中重点使用的部件,因此,在图1中没有示出,且不再详述。
在申请实施例中,以图1所示手机100为例进行描述,但是并不限制本申请实施例应用到其他类型的设备中。如图2所示,本申请的一个实施例描述了一种信息采集的方法,该方法应用于手机100,所述手机100运行有操作系统,该操作系统不限于Android操作系统、IOS,该方法包括以下步骤:
S100,目标方法的调用次数更新时,手机100根据该目标方法的方法标识获取该目标方法的调用次数;目标方法为目标程序调用的至少一个方法中的任一方法,目标程序为运行于所述手机100的操作系统中的任一程序,调用次数为在目标程序的运行生命周期内一方法被目标程序调用的次数,方法标识用于指示与方法标识对应的目标程序调用的方法。
本申请实施例中,手机100可通过处理器120获取目标方法的调用次数,还可通过处理器120从手机100存储器130中获取目标方法的调用次数,储存器130中存储有目标程序对应的运行数据,目标方法的调用次数保存在运行数据中。
S200,手机100根据目标方法的调用次数、第一阈值和第二阈值,记录该目标方法的方法信息并设置该目标方法的方法状态;方法状态用于指示与方法状态对应的目标程序调用的方法的状态,方法状态分为第一状态或第二状态,第一状态对应第一阈值,第二状态对应第二阈值,第二阈值大于0且小于第一阈值;具体地,调用状态设置函数将该目标方法的方法标识和对应的方法状态写入共享映射,共享映射用于记录方法标识与方法状态的对应关系。可选的,第一阈值和第二阈值是可调阈值,可以根据实现目的对其进行调整。
本申请实施例中,手机100获取目标方法的调用次数之后,可通过处理器120从存储器130中获取第一阈值和第二阈值,并根处理目标方法的调用次数、第一阈值和第二阈值,具体的,处理器120根据目标方法的调用次数、第一阈值和第二阈值,记录该目标方法的方法信息并设置该目标方法的方法状态。更为具体地,处理器120从存储器130调用状态设置函数将该目标方法的方法标识和对应的方法状态写入共享映射实现设置目标方法的方法状态目的。
如图3所示,S200具体包括以下步骤:
S201,手机100判断目标方法的调用次数是否大于第一阈值;
S202,若该目标方法的调用次数大于第一阈值,则手机100记录该目标方法的方法信息并设置该目标方法的方法状态为第一状态。
S203,否则,手机100判断该目标方法的调用次数是否大于第二阈值;
S204,若该目标方法的调用次数大于第二阈值,则手机100记录该目标方法的方法信息并设置该目标方法的方法状态为第二状态。
在本申请实施例中,在S200之前还包括S300,手机100根据目标方法的方法标识确定该目标方法的方法状态,实际中,目标方法的方法状态确定的结果可能存在着三种情况:不存在该目标方法的相应方法状态、该目标方法的相应方法状态为第一状态和该目标方法的相应方法状态为第二状态。
在本申请实施例中,具体的,手机100可通过处理器120根据目标方法的方法标识确定该目标方法的方法状态,也可以通过处理器120从存储器130中获取目标方法的方法标识并根据目标方法的方法标识确定该目标方法的方法状态。
在本申请实施例中,如果手机100根据目标方法的方法标识确定该目标方法的方法状态的结果是:不存在该目标方法的方状态时,则手机100执行S200,即S201-S204。
如果手机100根据目标方法的方法标识确定该目标方法的方法状态的结果是:该目标方法的方法状态是第二状态时,则手机100执行以下步骤:
S400,手机100判断该目标方法的调用次数是否大于第一阈值;
S500,若该目标方法的调用次数大于第一阈值,则手机100将该目标方法的方法状态由第二状态设置为第一状态;具体地,手机100调用状态设置函数将该目标方法的方法状态由第二状态设置为第一状态。
如果手机100根据目标方法的方法标识确定该目标方法的方法状态的结果是:该目标方法的方法状态是第一状态,表示该目标方法的方法信息已被记录且不需要再更新其方法状态,即手机100不需要再执行具体步骤。
在本申请实施例中,具体的,手机100可通过处理器120和存储器130的配合执行上述步骤。
可选的,如图4所示,S200具体包括以下步骤:
S210,手机100判断该目标方法的调用次数是否大于第二阈值;
S220,若该目标方法的调用次数大于第二阈值,则手机100判断目标方法的调用次数是否大于第一阈值;
S230,若该目标方法的调用次数大于第一阈值,则手机100记录该目标方法的方法信息并设置该目标方法的方法状态为第一状态。
S240,否则,则手机100记录该目标方法的方法信息并设置该目标方法的方法状态为第二状态。
在本申请实施例中,在S200之前还包括S600,手机100根据目标方法的方法标识确定该目标方法的方法状态,目标方法的方法状态确定的结果可能存在着三种情况,此处不再赘述,可以参见图3对应的实施例的相应描述。
在本申请实施例中,具体的,手机100可通过处理器120根据目标方法的方法标识确定该目标方法的方法状态,也可以通过处理器120从存储器130中获取目标方法的方法标识并根据目标方法的方法标识确定该目标方法的方法状态。
在本申请实施例中,如果手机100根据目标方法的方法标识确定该目标方法的方法状态的结果是:不存在该目标方法的方状态时,则手机100执行S200,即S210-S240。如果手机100根据目标方法的方法标识确定该目标方法的方法状态的结果是:该目标方法的方法状态是第二状态时,则手机100执行以下步骤:
S700,手机100判断该目标方法的调用次数是否大于第一阈值;
S800,若该目标方法的调用次数大于第一阈值,则手机100将该目标方法的方法状态由第二状态设置为第一状态;具体地,手机100调用状态设置函数将该目标方法的方法状态由第二状态设置为第一状态。
如果手机100根据目标方法的方法标识确定该目标方法的方法状态的结果是:该目标方法的方法状态是第一状态,表示该目标方法的方法信息已被记录且不需要再更新其方法状态,即手机100不需要再执行具体步骤。
在本申请实施例中,具体的,手机100可通过处理器120和存储器130的配合执行上述步骤。
需要说明的是,图3对应的实施例中的步骤S300-S500与图4对应的实施例中的步骤S600-S800可以是相同内容步骤,图3对应的实施例中步骤S201-S204和图4对应的实施例中步骤S210-S240是步骤S200两种可能的具体实现方法步骤。
本申请实施例中,如图5所示,S300或S600具体包括以下步骤:
S310,手机100调用状态返回函数根据目标方法的方法标识从共享映射中获取该目标方法的方法状态;
在本申请实施例中,手机100可通过处理器120调用状态返回函数根据目标方法的方法标识从共享映射中获取该目标方法的方法状态;也可以通过处理器120从存储器130中调用状态返回函数并根据目标方法的方法标识从存储器130存有的共享映射中获取该目标方法的方法状态。
S320,手机100根据状态返回函数返回的结果确定目标方法的方法状态,状态返回函数返回的结果存在三种情况,此处不再赘述,可以参见图3对应的实施例的相应描述;在实际实现中,可以定义如下:状态返回函数返回结果为null则表示不存在方法状态,返回结果为0表示方法状态为第一状态,返回结果为1表示方法状态为第二状态。
在本申请实施例中,手机100可通过处理器120根据状态返回函数返回的结果确定目标方法的方法状态。
可选的,上面实施例中描述的记录该目标方法的方法信息具体为将目标方法的方法信息写入目标程序对应的profile文件,profile文件是指用于存储目标程序运行数据的文件,目标程序对应的profile文件包括至少一个目标程序调用的方法的信息,在本申请实施例中,基于目标程序对应的profile文件,如图6所示,该方法还包括以下步骤:
S900,手机100调用状态返回函数根据第二类方法的的方法标识从共享映射中获取第二类方法的方法状态,第二类方法用于指示目标程序对应的profile文件中方法信息对应的方法;
在本申请实施例中,手机100可通过处理器120调用状态返回函数根据第二类方法的的方法标识从共享映射中获取第二类方法的方法状态,也可以通过处理器120从存储器130中调用状态返回函数并第二类方法的的方法标识识从存储器130存有的共享映射中获取第二类方法的方法状态。
S1000,手机100确定第二类方法中对应的方法状态为第一状态的方法为第一类方法;
在申请实施例中,手机100可通过处理器120确定第二类方法中对应的方法状态为第一状态的方法为第一类方法。
S1100,手机100将所得到的第一类方法的方法信息进行预先编译技术AOT编译。
在申请实施例中,手机100可通过处理器120将所得到的第一类方法的方法信息进行预先编译技术AOT编译。
本申请实施例提供的信息采集的方法,不仅可以采集被调用频率高的方法的方法信息,还对采集到的方法信息对应的方法进行分级,优化了采集方法的方法信息,在不增加方法信息编译成机器可识别代码的工作量的前提下采集更多的被调用方法的方法信息。
根据背景技术部分的描述可知,随着程序的运行,程序所要调用的方法的代码被不断地加载到内存(RAM,RamdomAccessMemory)中,为了保持运行的程序运行流畅性,基于profile文件采集的方法信息,本申请的实施例提供了两种内存释放的方法,可应用于各种终端,本申请实施例以图1所示手机100为例进行描述,但是并不限制本申请实施例应用到其他类型的设备中,具体的,手机100存储器130包括RAM和ROM(Read Only Memory)两种类型的具体存储介质,本申请实施例提供的内存释放方法用于释放手机100的内存是指释放手机100的RAM。
如图7所示,本申请实施例提供的一种内存释放的方法,该方法包括以下步骤:
S2100,手机100获取获取目标程序对应的profile文件中热方法的起始地址和结束地址;其中,热方法用于指示目标程序对应的profile文件中方法信息对应的方法;profile文件中方法信息可以是通过上述实施例提供的信息采集的方法得到,也可以是通过现有技术中的已有方法或以后可能出现的方法得到,本申请实施例对profile文件采集方法信息的具体实现方式不做限定。需要说明的是,如果profile文件中方法信息是通过上述实施例提供的信息采集的方法得到,那么热方法可以是profile文件中方法信息对应的方法,也可以是profile文件中方法信息对应的方法状态为第一状态的方法,本申请以热方法是profile文件中方法信息对应的方法为例;相对应的,如果热方法是profile文件中方法信息对应的方法,那么所述冷方法用于指示对应的方法信息未被写入所述profile文件中的所述目标程序调用的方法;如果热方法是profile文件中方法信息对应的方法状态为第一状态的方法,那么所述冷方法用于指示对应的方法信息未被写入所述profile文件中的所述目标程序调用的方法和所述profile文件中方法信息对应的所述方法状态为第二状态的方法。
进一步地,如图8所示,S2100具体包括一下步骤:
S2110,手机100获取所述热方法的方法标识;
S2120,手机100根据所述热方法的方法标识获取所述热方法的起始地址;
S2130,手机100根据所述热方法的起始地址得到所述热方法的头部;
S2140,手机100根据所述热方法的头部计算所述热方法的代码所占内存的大小;
S2150,手机100根据所述热方法代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址。
在本申请实施例中,手机100可通过处理器120执行S2110-S2150以获取目标程序对应的profile文件中热方法的起始地址和结束地址。
S2200,手机100根据所述热方法的起始地址和结束地址得到冷方法的起始地址和结束地址,其中,冷方法用于指示对应的方法信息未被写入所述profile文件中的所述目标程序调用的方法;
在本申请实施例中,手机100可通过处理器120根据所述热方法的起始地址和结束地址得到冷方法的起始地址和结束地址。
S2300,手机100根据所述冷方法的起始地址和结束地址释放所述冷方法的代码所占的内存。
在本申请实施例中,手机100可通过处理器120根据所述冷方法的起始地址和结束地址释放代所述冷方法的代码所占的内存。
进一步地,在本申请实施例中,在S2110之后,手机100将所述热方法的方法标识存入第一集合;
且,S2120具体为:手机100遍历所述第一集合根据所述热方法的方法标识获取所述热方法的起始地址并将所述热方法的起始地址按照大小存入第二集合;
在S2150之后,手机100:将所述热方法的结束地址按照大小存入第三集合;
S2200具体包括:根据所述第二集合和所述三集合得到所述冷方法的起始地址和结束地址。
由于内存存放的代码段仅由热方法和冷方法组成,因此,热方法之间内存区域则为冷方法所占内存,如图9所示的冷方法起始地址和结束地址示意图,在本申请实施例中,第二集合保存有热方法的起始地址,第三集合保存有热方法的结束地址,具体地,手机100通过处理器120从第三集合中获取热方法1的结束地址,从第二集合中获取热方法2的起始地址,根据热方法1的结束地址和热方法2的起始地址可得到冷方法区1,冷方法区1可能包括一个或多个冷方法;以此类推,可以得到多个冷方法区,即冷方法的代码所占的内存。
在实际中,内存是以页为单位的,进一步地,S2300具体包括:手机100根据所述冷方法的起始地址和结束地址计算所述冷方法的代码所占内存的大小;手机100根据单一内存页大小、所述冷方法的代码所占内存的大小以及所述冷方法的起始地址和结束地址确定冷方法内存页,所述冷方法内存页为代码段内存由所述冷方法的代码占满的内存页;手机100释放所述冷方法内存页。
本申请实施例提供的内存释放的方法可以定位具体需要释放的被冷方法代码所占的内存页,保证程序运行流畅的前提下能偶精准释放内存。
如图10所示,本申请实施例提供的一种内存释放的方法,该方法包括以下步骤:
S3200,手机100获取热方法的起始地址和结束地址,其中,所述热方法用于指示所述profile文件中方法信息对应的方法或所述profile文件中方法信息对应的所述方法状态为所述第一状态的方法;
在本申请实施例中,手机100可通过处理器120获取热方法的起始地址和结束地址。
S3300,手机100根据所述热方法的代码所占内存的大小以及所述热方法的起始地址和结束地址释放所述目标程序调用的方法的代码段所占内存。
在本申请实施例中,手机100可通过处理器120根据所述热方法的代码所占内存的大小以及所述热方法的起始地址和结束地址释放所述目标程序调用的方法的代码段所占内存。
可选的,在S3200之前,该方法还包括S3100:手机100建议释放目标程序调用的方法的代码所占内存,具体的,手机100调用第一函数建议操作系统的内存释放目标程序调用的方法的代码所占内存。以搭载Android操作系统为例,建议释放内存,并不直接执行释放内存,可通过访问的方式标记方法,标记的方法的代码所占内存将不被释放。
进一步地,如图11所示,S3200具体包括一下步骤:
S3210,手机100获取所述热方法的方法标识;
S3220,手机100根据所述热方法的方法标识获取所述热方法的起始地址;
S3230,手机100根据所述热方法的起始地址得到所述热方法的头部;
S3240,手机100根据所述热方法的头部计算所述热方法的代码所占内存的大小;
S3250,手机100根据所述热方法代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址。
在本申请实施例中,手机100可通过处理器120执行S3210-S3250以获取目标程序对应的profile文件中热方法的起始地址和结束地址。
进一步地,如图12所示,S3300具体包括以下步骤:
S3310,手机100根据所述热方法的代码所占内存的大小和单一内存页大小判断所述热方法是否存在跨页,所述跨页用于指示某一方法或同一类型方法区的代码占至少两个连续的内存页的代码段内存。
S3320,若所述热方法存在跨页,则手机100访问所述热方法的起始地址、中间地址和结束地址,并释放未访问的所述目标程序调用的方法所占的内存页,其中,所述中间地址用于指示同一方法中与起始地址距离N个单一内存页大小的地址,所述N为非0正整数;
如图14所示,单一内存页的大小为4KB,图中热方法的代码占用了4页,那么,中间地址则为起始地址+4KB,起始地址+8KB。
S3330,若所述热方法不存在跨页,则手机100访问所述热方法的起始地址和/或结束地址,并释放未访问的所述目标程序调用的方法所占内存页。
在本申请实施例中,手机100可通过处理器120建议释放目标程序调用的方法的代码所占内存,具体的,手机100可通过处理器120从存储器130中调用第一函数建议操作系统的内存释放目标程序调用的方法的代码所占内存。
在实际实现中,以搭载Android操作系统为例,可以通过下面方法实现S3300:首先计算方法在起始地址所在内存页中的占用大小(first_size=page_size-method_size%page_size),再计算方法跨内存页数量(number=(method_size-first_size)/page_size+1),如果跨内存页数量等于1,则访问方法起始地址和结束地址;如果跨内存页数量大于1,则访问起始、结束地址和中间地址;当前序号(cur_num)页上的中间地址为method_start+page_size*cur_num)。
在本申请实施例中,如果profile文件是通过上面实施例提供的信息采集的方法得到,该方还包括:手机100将所述profile文件中所述方法状态为所述第一状态的方法的方法信息进行预先编译技术AOT编译。
本申请实施例提供的释放内存的方法能够在保持程序运行流畅的前提下精准释放冷方法(调用频率相对较低的方法)的代码占用的内存。
需要说明的,上面实施例描述的内存释放的方法或者内存释放的步骤,可选的,在满足一定条件时触发,例如,内存被占用达到某一阈值时,触发上面实施例描述的内存释放步骤和方法;也可以每隔预设时间触发上面实施例描述的内存释放步骤或方法,本申请对此不作具体限定。
基于以上实施例,本申请实施例还提供了一种终端设备200,终端设备200用于实现图2-6对应实施例提供的采集信息的方法和/或图7-9对应实施例提供的内存释放方法和/或图10-13对应实施例提供的内存释放方法,参阅图14所示,终端设备200可以包括存储器201、处理器202、显示屏幕203以及输入输出接口204。
所述存储器201,用于存储处理器202执行的计算机程序。存储器201可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端设备200的使用所创建的数据等。处理器202,可以是一个中央处理单元(central processing unit,CPU),或者为数字处理单元等等。所述显示屏幕203,用于显示由用户输入的信息或提供给用户的信息。可选的,显示屏幕203可以采用液晶显示器(liquid crystal display,LCD)或OLED(organic light-emitting diode,有机发光二极管)等形式来配置显示屏幕203。
本申请实施例中不限定上述存储器201、处理器202、显示屏幕203以及输入输出接口204之间的具体连接介质。本申请实施例在图14中以存储器201、处理器202、显示屏幕203以及输入输出接口204之间通过总线205连接,总线205在图14中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线205可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器201可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器201也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器201是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器201可以是上述存储器的组合。
处理器202,用于调用所述存储器201中存储的计算机程序执行图2-6对应实施例提供的采集信息的方法和/或图7-9对应实施例提供的内存释放方法和/或图10-13对应实施例提供的内存释放方法,具体方法步骤请参与相应实施例的描述,此处不再赘述。
本申请实施例还提供了一种信息采集装置300,用于实现图2-6对应实施例描述的方法,为了简洁描述装置各模块的相应功能及各模块之间关系,不再重复描述相关概念、解释,具体可以参阅对应方法实施例的描述。如图15所示,该装置300包括:
调用次数获取模块301,用于在目标程序的运行生命周期中目标方法的调用次数增加时,根据所述目标方法的方法标识获取所述目标方法的调用次数;
记录模块302,用于根据第一阈值、第二阈值以及调用次数获取模块301获得的所述目标方法的调用次数记录所述目标方法的方法信息;
状态设置模块303,用于根据第一阈值、第二阈值以及调用次数获取模块301获得的所述目标方法的调用次数设置所述目标方法的方法状态。
进一步地,该装置300还包括:第一判断模块304,用于判断所述目标方法的调用次数是否大于所述第一阈值;
第二判断模块305,用于第一判断模块304得到所述目标方法的调用次数小于或等于所述第一阈值时,判断所述目标方法的调用次数是否大于所述第二阈值;
其中,记录模块302,具体用于第一判断模块304判断所述目标方法的调用次数大于所述第一阈值和所述第二判断模块305得到所述目标方法的调用次数大于所述第二阈值时,记录所述目标方法的方法信息;
状态设置模块303,具体用于第一判断模块304判断所述目标方法的调用次数大于所述第一阈值时,设置所述目标方法的方法状态为所述第一状态,和,第二判断模305得到所述目标方法的调用次数大于所述第二阈值时,设置所述目标方法的方法状态为所述第二状态。
进一步地,该装置300,还包括:状态确定模块306,用于根据所述目标方法的方法标识确定所述目标方法的方法状态。
进一步地,该装置300,还包括:第五判断模块307,用于状态确定模块306得到所述目标方法的方法状态为所述第二状态时,判断所述目标方法的调用次数是否大于所述第一阈值;
其中,记录模块302,具体用于状态确定模块306得到不存在所述目标方法的方法状态时记录所述目标方法的方法信息;
状态设置模块303,具体用于状态确定模块306得到不存在所述目标方法的方法状态时设置所述目标方法的方法状态和第五判断模块307得到所述目标方法的调用次数大于所述第一阈值时设置所述目标方法的方法状态由所述第二状态设置为所述第一状态。
进一步地,状态设置模块303,具体用于调用状态设置函数将所述目标方法的方法标识和对应的方法状态写入共享映射。
进一步地,状态确定模块306具体用于:调用状态返回函数根据所述目标方法的方法标识从共享映射中获取所述目标方法的方法状态;根据所述状态返回函数返回的结果确定所述目标方法的方法状态。
进一步地,状态设置模块303还具体用于调用状态设置函数将所述目标方法的方法状态由所述第二状态设置为所述第一状态。
进一步地,记录模块302具体用于将所述目标方法的方法信息写入所述目标程序对应的profile文件。
可选的,如图16所示,该装置300的第一判断模块304替换为第三判断模块308,第二判断模块305替换为第四判断模块309;也可以是第一判断模块304、第二判断模块305、第三判断模块308和第四判断模块309同时存在,可以为相同模块,本申请实施例以第一判断模块304替换为第三判断模块308,第二判断模块305替换为第四判断模块309为例。
第三判断模块308,用于判断所述目标方法的调用次数是否大于所述第二阈值;
第四判断模块309,用于第三判断模块308得到所述目标方法的调用次数大于所述第二阈值时,判断所述目标方法的调用次数是否大于所述第一阈值;
其中,记录模块302,具体用于第三判断模块308判断所述目标方法的调用次数大于所述第二阈值时,记录所述目标方法的方法信息;
状态设置模块303,具体用于第四判断模块309判断所述目标方法的调用次数大于所述第一阈值时设置所述目标方法的方法状态为所述第一状态,和,第四判断模块309得到所述目标方法的调用次数小于或等于所述第一阈值时设置所述目标方法的方法状态为所述第二状态。
需要注意的,第三判断模块308与第一判断模块304可以同一个模块,第四判断模块309与第二判断模块305可以是同一个模块。
在本申请实施例中,装置300与终端设备200为相同设备,装置300各模块具体地通过如图14对应实施例中终端设备200的处理器202调用存储器201中存储的计算机程序实现。
本申请实施例提供的信息采集装置,不仅可以采集被调用频率高的方法的方法信息,还对采集到的方法信息对应的方法进行分级,优化了采集方法的方法信息,在不增加方法信息编译成机器可识别代码的工作量的前提下采集更多的被调用方法的方法信息。
基于上面实施例,本申请实施例提供了一种内存释放装置400,用于实现图7-9对应实施例描述的方法,为了简洁描述装置各模块的相应功能及各模块之间关系,不再重复描述相关概念、解释,具体可以参阅对应方法实施例的描述。如图17所示,该装置400包括:
第一热方法地址获取模块401,用于获取profile文件中热方法的起始地址和结束地址;这里的profile文件可以通过上面实施例终端设备200或装置300得到的,也可以通过其他装置得到。
冷方法地址计算模块402,用于根据第一热方法地址获取模块401得到的所述热方法的起始地址和结束地址,计算冷方法的起始地址和结束地址;
第一内存释放模块403,用于根据冷方法地址计算模块402得到的所述冷方法的起始地址和结束地址释放代所述冷方法的代码所占内存。
进一步地,第一热方法地址获取模块401具体用于:获取所述热方法的方法标识;根据所述热方法的方法标识获取所述热方法的起始地址;根据所述热方法的起始地址得到所述热方法的头部;根据所述热方法的头部计算所述热方法的代码所占内存的大小;根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址。
进一步地,第一热方法地址获取模块401还具体用于:在所述获取所述热方法的方法标识之后,将所述热方法的方法标识存入第一集合;遍历所述第一集合根据所述热方法的方法标识获取所述热方法的起始地址并将所述热方法的起始地址按照大小存入第二集合;在所述根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址之后,将所述热方法的结束地址按照大小存入第三集合。
进一步地,冷方法地址计算模块402具体用于根据第一热方法地址获取模块401得到的所述第二集合和所述三集合计算所述冷方法的起始地址和结束地址。
进一步地,装置400还包括:冷方法内存页模块404,用于根据冷方法地址计算模块402得到的所述冷方法的起始地址和结束地址计算所述冷方法的代码所占内存的大小;根据中单一内存页大小、所述冷方法的代码所占内存的大小以及所述冷方法的起始地址和结束地址确定冷方法内存页;
第一内存释放模块403具体用于释放冷方法内存页模块404得到的所述冷方法内存页。
可选的,如果装置400获取的profile文件是通过上面实施例中描述的终端设备200或装置300得到的,以搭载Android操作系统为例,那么装置400还包括编译模块,用于将profile文件中方法状态为第一状态的方法的方法信息进行预先编译技术AOT编译。
在本申请实施例中,装置400与终端设备200为相同设备,装置400各模块具体地通过如图14对应实施例中终端设备200的处理器202调用存储器201中存储的计算机程序实现。
需要说明的是,装置400与上面实施例描述的装置300可以是不同的装置,也可以是集成在相同的装置上。
本申请实施例提供的内存释放装置,可以定位具体需要释放的被冷方法代码所占的内存页,保证程序运行流畅的前提下能偶精准释放内存。
基于上面实施例,本申请实施例还提供了一种内存释放装置500,用于实现图10-13对应实施例描述的方法,为了简洁描述装置各模块的相应功能及各模块之间关系,不再重复描述相关概念、解释,具体可以参阅对应方法实施例的描述。如图18所示,该装置500包括:
第二热方法地址获取模块501,用于获取热方法的起始地址和结束地址;这里的profile文件可以通过上面实施例终端设备200或装置300得到的,也可以通过其他装置得到。
第二内存释放模块502,用于根据所述热方法的代码所占内存的大小以及所述第二热方法地址获取模块得到的所述热方法的起始地址和结束地址释放所述目标程序调用的方法所占的代码段内存。
可选的,装置500还包括建议释放模块503,用于在第二热方法地址获取模块501获取热方法的起始地址和结束地址之前建议释放内存。
进一步地,第二热方法地址获取模块501具体用于:获取所述热方法的方法标识;根据所述热方法的方法标识获取所述热方法的起始地址;根据所述热方法的起始地址得到所述热方法的头部;根据所述热方法的头部计算所述热方法的代码所占内存的大小;根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址。
进一步地装置500还包括:跨页判断模块504,用于根据所述热方法的代码所占内存的大小和单一内存页大小判断所述热方法是否存在跨页,所述跨页用于指示某一方法占至少两个内存页的代码段内存;
地址访问模块505,用于跨页判断模块504得到所述热方法存在跨页时访问所述热方法的起始地址、中间地址和结束地址和/或跨页判断模块504得到所述热方法不存在跨页时访问所述热方法的起始地址和结束地址,其中,所述中间地址用于指示同一方法的起始地址距离N个单一内存页大小的地址,所述N为非0正整数;
第二内存释放模块502具体用于释放地址访问模块505未访问的所述目标程序调用的方法所占的内存页。
可选的,如果装置500获取的profile文件是通过上面实施例中描述的终端设备200或装置300得到的,以搭载Android操作系统为例,那么装置500还包括编译模块,用于将profile文件中方法状态为第一状态的方法的方法信息进行预先编译技术AOT编译。
在本申请实施例中,装置500与终端设备200为相同设备,装置500各模块具体地通过如图14对应实施例中终端设备200的处理器202调用存储器201中存储的计算机程序实现。
需要说明的是,装置500与上面实施例描述的装置300可以是不同的装置,也可以是集成在相同的装置上。装置500与装置400可以集成在相同装置上。
本申请实施例提供的内存释放装置能够在保持程序运行流畅的前提下精准释放冷方法(调用频率相对较低的方法)的代码占用的内存。
基于上面实施例,本申请实施例提供了一种操作系统,该操作系统包括第一阈值、第二阈值、方法状态;其中,第一阈值与第二阈值为非0正整数,第二阈值大于0且小于第一阈值,方法状态用于指示一个方法的状态,方法状态包括第一状态或第二状态,第一状态用于指示对应调用次数大于第一阈值的方法的状态,第二状态用于指示对应调用次数大于第二阈值且小于或等于第一阈值的方法的状态,调用次数为在目标程序的运行生命周期内一方法当前被目标程序调用的次数,目标程序为运行于操作系统中的任一程序;
操作系统还包括共享映射、状态设置函数和状态返回函数;共享映射用于记录方法标识与方法状态的对应关系,方法标识用于指示与方法标识对应的方法;状态设置函数用于将同一方法的方法标识和方法状态写入共享映射或设置一方法的方法标识在共享映射中对应的方法状态;状态返回函数用于根据一方法的方法标识和共享映射返回对应的的方法状态。
进一步地,当某一方法的调用次数大于第一阈值,状态设置函数用于设置某一方法的方法状态为第一状态;或者,当某一方法的调用次数大于第二阈值且小于等于第一阈值,状态设置函数用于设置某一方法的方法状态为第二状态。
本申请实施例提供的操作系统可以实现图2-6对应实施例提供的采集信息的方法和/或图7-9对应实施例提供的内存释放方法和/或图10-13对应实施例提供的内存释放方法。
下面以终端(例如上面实施例中描述的手机100或终端设备)搭载Android操作系统为例。现有技术中,Android操作系统的每一个应用程序是运行在独立的ART(安卓系统虚拟机,Android Runtime)实例上,在应用程序运行过程中,首先加载oat文件到内存执行其中机器码,当出现所要调用的方法不在oat文件的情况,ART会加载该方法对应的dex文件到内存(RAM,RamdomAccessMemory)并通过ART的解释器对其中的字节码进行解释执行;当一个方法被调用次数满足一个阈值时(在下面实施例中称为第一阈值),会将这个方法的方法信息记录到profile文件中,在满足一定条件下(如锁屏待机并充电四个小时),ART会对profile文件中记录的方法信息对应的方法的dex文件做AOT(安卓Java程序预先编译技术,Ahead Of Time)编译,并更新oat文件,可以加快下次程序启动和运行速度。
为了使得现有Android操作系统能够图2-6对应实施例提供的采集信息的方法和/或图7-9对应实施例提供的内存释放方法和/或图10-13对应实施例提供的内存释放方法。
申请实施例提供了一种改进Android操作系统的方法,该方法包括:在所述Android操作系统的系统属性中添加第二阈值,所述第二阈值大于0且小于所述Android操作系统中的第一阈值,第一阈值与第二阈值为非0正整数;在ART的方法类定义中添加方法状态,所述方法状态用于指示一个方法的状态,所述方法状态为第一状态或第二状态,所述第一状态用于指示调用次数大于所述第一阈值的方法的状态,所述第二状态用于指示对应调用次数大于所述第一阈值且小于或等于所述第一阈值的方法的状态,所述ART用于运行所述Android操作系统的程序;在所述Android操作系统中新建由方法标识到所述方法状态的共享映射,所述共享映射用于记录所述方法标识与所述方法状态的对应关系,所述方法标识用于指示一个方法,
在ART的方法类定义中添加状态设置函数,所述状态设置函数用于将同一方法的方法标识和方法状态写入所述共享映射;
在ART的方法类定义中添加状态返回函数,所述状态返回函数用于根据所述方法标识和所述共享映射返回所述方法标识所指示的方法的方法状态。
进一步地,当某一方法的调用次数大于所述第一阈值,所述状态设置函数用于设置所述某一方法的方法状态为所述第一状态,或者,当某一方法的调用次数大于所述第二阈值且小于等于所述第一阈值,所述状态设置函数用于设置所述某一方法的方法状态为所述第二状态,所述调用次数为在目标程序的运行生命周期内任一方法被所述目标程序调用的次数,所述目标程序为运行于所述Android操作系统中的任一程序。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (31)
1.一种信息采集的方法,其特征在于,包括:
在目标程序的运行生命周期中目标方法的调用次数增加时,根据所述目标方法的方法标识获取所述目标方法的调用次数,其中,所述目标程序为运行中的任一程序,所述目标方法为所述目标程序调用的至少一个方法中的任一方法;
根据所述目标方法的调用次数、第一阈值和第二阈值,将所述目标方法的方法信息写入所述目标程序对应的profile文件并设置所述目标方法的方法状态,所述profile文件包括至少一个方法信息,其中,所述方法状态用于指示与所述方法状态对应的所述目标程序调用的方法的状态,所述方法状态为第一状态或第二状态,所述第一状态对应所述第一阈值,所述第二状态对应所述第二阈值,所述第一阈值与所述第二阈值为非0正整数,所述第二阈值大于0且小于所述第一阈值;
根据热方法的起始地址和结束地址得到冷方法的起始地址和结束地址;所述热方法用于指示所述profile文件中方法信息对应的方法,所述冷方法用于指示对应的方法信息未被写入所述profile文件中的所述目标程序调用的方法;或者,所述热方法用于指示所述profile文件中方法信息对应的所述方法状态为所述第一状态的方法,所述冷方法用于指示对应的方法信息未被写入所述profile文件中的所述目标程序调用的方法,以及所述profile文件中方法信息对应的所述方法状态为所述第二状态的方法;
根据所述冷方法的起始地址和结束地址释放所述冷方法的代码所占内存;
将所述profile文件中所述方法状态为所述第一状态的方法的方法信息进行预先编译技术AOT编译。
2.如权利要求1所述的方法,其特征在于,所述根据所述目标方法的调用次数、第一阈值和第二阈值,将所述目标方法的方法信息写入所述目标程序对应的profile文件并设置所述目标方法的方法状态包括:
判断所述目标方法的调用次数是否大于所述第一阈值;
若所述目标方法的调用次数大于所述第一阈值,则记录所述目标方法的方法信息并设置所述目标方法的方法状态为所述第一状态;
否则,判断所述目标方法的调用次数是否大于所述第二阈值;
若所述目标方法的调用次数大于所述第二阈值,则记录所述目标方法的方法信息并设置所述目标方法的方法状态为所述第二状态。
3.如权利要求1所述的方法,其特征在于,所述根据所述目标方法的调用次数、第一阈值和第二阈值,将所述目标方法的方法信息写入所述目标程序对应的profile文件并设置所述目标方法的方法状态包括:
判断所述目标方法的调用次数是否大于第二阈值;
若所述目标方法的调用次数大于所述第二阈值,判断所述目标方法的调用次数是否大于所述第一阈值;
若所述目标方法的调用次数大于所述第一阈值,则记录所述目标方法的方法信息并设置所述目标方法的方法状态为所述第一状态;
否则,则记录所述目标方法的方法信息并设置所述目标方法的方法状态为所述第二状态。
4.如权利要求2或3所述的方法,其特征在于,在所述根据所述目标方法的调用次数、第一阈值和第二阈值,将所述目标方法的方法信息写入所述目标程序对应的profile文件并设置所述目标方法的方法状态之前,还包括:
根据所述目标方法的方法标识确定所述目标方法的方法状态。
5.如权利要求4所述的方法,其特征在于,不存在所述目标方法的方法状态,则执行所述根据所述目标方法的调用次数、第一阈值和第二阈值,将所述目标方法的方法信息写入所述目标程序对应的profile文件并设置所述目标方法的方法状态;或者,
所述目标方法的方法状态为所述第二状态,则判断所述目标方法的调用次数是否大于所述第一阈值;
若所述目标方法的调用次数大于所述第一阈值,则将所述目标方法的方法状态由所述第二状态设置为所述第一状态。
6.如权利要求1-3任选一所述的方法,其特征在于,所述设置所述目标方法的方法状态包括:
调用状态设置函数将所述目标方法的方法标识和对应的方法状态写入共享映射,所述共享映射用于记录所述方法标识与所述方法状态的对应关系。
7.如权利要求4所述的方法,其特征在于,所述根据所述目标方法的方法标识确定所述目标方法的方法状态包括:
调用状态返回函数根据所述目标方法的方法标识从共享映射中获取所述目标方法的方法状态,所述共享映射用于记录所述方法标识与所述方法状态的对应关系;
根据所述状态返回函数返回的结果确定所述目标方法的方法状态。
8.如权利要求5所述的方法,其特征在于,所述将所述目标方法的方法状态由所述第二状态设置为所述第一状态包括:
调用状态设置函数将所述目标方法的方法状态由所述第二状态设置为所述第一状态。
9.如权利要求1-3任选一所述的方法,其特征在于,所述方法还包括:
获取所述热方法的方法标识;
根据所述热方法的方法标识获取所述热方法的起始地址;
根据所述热方法的起始地址得到所述热方法的头部;
根据所述热方法的头部计算所述热方法的代码所占内存的大小;
根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址。
10.如权利要求9所述的方法,其特征在于,在所述获取所述热方法的方法标识之后,包括:将所述热方法的方法标识存入第一集合;
所述根据所述热方法的方法标识获取所述热方法的起始地址,包括:遍历所述第一集合根据所述热方法的方法标识获取所述热方法的起始地址并将所述热方法的起始地址按照大小存入第二集合;
在所述根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址之后,包括:将所述热方法的结束地址按照大小存入第三集合。
11.如权利要求10所述的方法,其特征在于,所述根据所述热方法的起始地址和结束地址得到冷方法的起始地址和结束地址包括:
根据所述第二集合和所述三集合得到所述冷方法的起始地址和结束地址。
12.如权利要求11所述的方法,其特征在于,所述根据所述冷方法的起始地址和结束地址释放代所述冷方法的代码所占内存包括:
根据所述冷方法的起始地址和结束地址计算所述冷方法的代码所占内存的大小;
根据单一内存页大小、所述冷方法的代码所占内存的大小以及所述冷方法的起始地址和结束地址确定冷方法内存页,所述冷方法内存页为代码段内存由所述冷方法占满的内存页;
释放所述冷方法内存页。
13.如权利要求1-3任选一所述的方法,其特征在于,还包括:
获取所述热方法的起始地址和结束地址;
根据所述热方法的代码所占内存的大小以及所述热方法的起始地址和结束地址释放所述目标程序调用的方法所占的代码段内存。
14.如权利要求13所述的方法,其特征在于,所述获取所述热方法的起始地址和结束地址包括:
获取所述热方法的方法标识;
根据所述热方法的方法标识获取所述热方法的起始地址;
根据所述热方法的起始地址得到所述热方法的头部;
根据所述热方法的头部计算所述热方法的代码所占内存的大小;
根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址。
15.如权利要求14所述的方法,其特征在于,所述根据所述热方法的代码所占内存的大小以及所述热方法的起始地址和结束地址释放所述目标程序调用的方法所占的代码段内存包括:
根据所述热方法的代码所占内存的大小和单一内存页大小判断所述热方法是否存在跨页,所述跨页用于指示某一方法的代码占至少两个连续的内存页;
若所述热方法存在跨页,则访问所述热方法的起始地址、中间地址和结束地址,并释放未访问的所述目标程序调用的方法所占的内存页,其中,所述中间地址用于指示同一方法中与起始地址距离N个单一内存页大小的地址,所述N为非0正整数;
若所述热方法不存在跨页,则访问所述热方法的起始地址和结束地址,并释放未访问的所述目标程序调用的方法所占内存页。
16.一种信息采集的装置,其特征在于,包括:
调用次数获取模块,用于在目标程序的运行生命周期中目标方法的调用次数增加时,根据所述目标方法的方法标识获取所述目标方法的调用次数,其中,所述目标程序为运行中的任一程序,所述目标方法为所述目标程序调用的至少一个方法中的任一方法;
记录模块,用于根据第一阈值、第二阈值以及所述调用次数获取模块获得的所述目标方法的调用次数将所述目标方法的方法信息写入所述目标程序对应的profile文件,所述profile文件包括至少一个方法信息,所述第一阈值与所述第二阈值为非0正整数,所述第二阈值大于0且小于所述第一阈值;
状态设置模块,用于根据第一阈值、第二阈值以及所述调用次数获取模块获得的所述目标方法的调用次数设置所述目标方法的方法状态,所述方法状态用于指示与所述方法状态对应的所述目标程序调用的方法的状态,所述方法状态为第一状态或第二状态,所述第一状态对应所述第一阈值,所述第二状态对应所述第二阈值;
冷方法地址计算模块,用于根据热方法的起始地址和结束地址得到冷方法的起始地址和结束地址;所述热方法用于指示所述profile文件中方法信息对应的方法,所述冷方法用于指示对应的方法信息未被写入所述profile文件中的所述目标程序调用的方法;或者,所述热方法用于指示所述profile文件中方法信息对应的所述方法状态为所述第一状态的方法,所述冷方法用于指示对应的方法信息未被写入所述profile文件中的所述目标程序调用的方法,以及所述profile文件中方法信息对应的所述方法状态为所述第二状态的方法;
第一内存释放模块,用于根据所述冷方法地址计算模块得到的所述冷方法的起始地址和结束地址释放代所述冷方法的代码所占内存;
编译模块,用于将所述profile文件中所述方法状态为所述第一状态的方法的方法信息进行预先编译技术AOT编译。
17.如权利要求16所述的装置,其特征在于,还包括:第一判断模块和第二判断模块;
所述第一判断模块,用于判断所述目标方法的调用次数是否大于所述第一阈值;
所述第二判断模块,用于所述第一判断模块得到所述目标方法的调用次数小于或等于所述第一阈值时,判断所述目标方法的调用次数是否大于所述第二阈值;
所述记录模块,具体用于所述第一判断模块判断所述目标方法的调用次数大于所述第一阈值和所述第二判断模块得到所述目标方法的调用次数大于所述第二阈值时,记录所述目标方法的方法信息;
所述状态设置模块,具体用于所述第一判断模块判断所述目标方法的调用次数大于所述第一阈值时设置所述目标方法的方法状态为所述第一状态,和,所述第二判断模块得到所述目标方法的调用次数大于所述第二阈值时设置所述目标方法的方法状态为所述第二状态。
18.如权利要求16所述的装置,其特征在于,还包括:第三判断模块和第四判断模块;
所述第三判断模块,用于判断所述目标方法的调用次数是否大于所述第二阈值;
所述第四判断模块,用于所述第三判断模块得到所述目标方法的调用次数大于所述第二阈值时,判断所述目标方法的调用次数是否大于所述第一阈值;
所述记录模块,具体用于所述第三判断模块判断所述目标方法的调用次数大于所述第二阈值时,记录所述目标方法的方法信息;
所述状态设置模块,具体用于所述第四判断模块判断所述目标方法的调用次数大于所述第一阈值时设置所述目标方法的方法状态为所述第一状态,和,所述第四判断模块得到所述目标方法的调用次数小于或等于所述第一阈值时设置所述目标方法的方法状态为所述第二状态。
19.如权利要求17或18所述的装置,其特征在于,还包括:
状态确定模块,用于根据所述目标方法的方法标识确定所述目标方法的方法状态。
20.如权利要求19所述的装置,其特征在于,还包括:第五判断模块;
所述第五判断模块,用于所述状态确定模块得到所述目标方法的方法状态为所述第二状态时,判断所述目标方法的调用次数是否大于所述第一阈值;
所述记录模块,具体用于所述状态确定模块得到不存在所述目标方法的方法状态时,将所述目标方法的方法信息写入所述目标程序对应的profile文件并设置所述目标方法的方法状态;
所述状态设置模块,具体用于所述状态确定模块得到不存在所述目标方法的方法状态时设置所述目标方法的方法状态和所述第五判断模块得到所述目标方法的调用次数大于所述第一阈值时设置所述目标方法的方法状态由所述第二状态设置为所述第一状态。
21.如权利要求16-18任选一所述的装置,其特征在于,所述状态设置模块,具体用于调用状态设置函数将所述目标方法的方法标识和对应的方法状态写入共享映射,所述共享映射用于记录所述方法标识与所述方法状态的对应关系。
22.如权利要求19所述的装置,其特征在于,所述状态确定模块具体用于:调用状态返回函数根据所述目标方法的方法标识从共享映射中获取所述目标方法的方法状态,所述共享映射用于记录所述方法标识与所述方法状态的对应关系;
根据所述状态返回函数返回的结果确定所述目标方法的方法状态。
23.如权利要求20所述的装置,其特征在于,所述状态设置模块具体用于调用状态设置函数将所述目标方法的方法状态由所述第二状态设置为所述第一状态。
24.如权利要求16-18任选一所述的装置,其特征在于,还包括:第一热方法地址获取模块;所述第一热方法地址获取模块具体用于:
获取所述热方法的方法标识;
根据所述热方法的方法标识获取所述热方法的起始地址;
根据所述热方法的起始地址得到所述热方法的头部;
根据所述热方法的头部计算所述热方法的代码所占内存的大小;
根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址。
25.如权利要求24所述的装置,其特征在于,所述第一热方法地址获取模块具体用于:
在所述获取所述热方法的方法标识之后,将所述热方法的方法标识存入第一集合;
遍历所述第一集合根据所述热方法的方法标识获取所述热方法的起始地址并将所述热方法的起始地址按照大小存入第二集合;
在所述根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址之后,将所述热方法的结束地址按照大小存入第三集合。
26.如权利要求25所述的装置,其特征在于,所述冷方法地址计算模块具体用于根据所述第一热方法地址获取模块得到的所述第二集合和所述三集合计算所述冷方法的起始地址和结束地址。
27.如权利要求25所述的装置,其特征在于,还包括:冷方法内存页模块;
所述冷方法内存页模块,用于根据所述冷方法地址计算模块得到的所述冷方法的起始地址和结束地址计算所述冷方法的代码所占内存的大小;
根据中单一内存页大小、所述冷方法的代码所占内存的大小以及所述冷方法的起始地址和结束地址确定冷方法内存页,所述冷方法内存页为代码段内存由所述冷方法占满的内存页;
所述第一内存释放模块具体用于释放所述冷方法内存页模块得到的所述冷方法内存页。
28.如权利要求16-18任选一所述的装置,其特征在于,还包括:
第二热方法地址获取模块,用于获取所述热方法的起始地址和结束地址;
第二内存释放模块,用于根据所述热方法的代码所占内存的大小以及所述第二热方法地址获取模块得到的所述热方法的起始地址和结束地址释放所述目标程序调用的方法所占的代码段内存。
29.如权利要求28所述的装置,其特征在于,所述第二热方法地址获取模块具体用于:
获取所述热方法的方法标识;
根据所述热方法的方法标识获取所述热方法的起始地址;
根据所述热方法的起始地址得到所述热方法的头部;
根据所述热方法的头部计算所述热方法的代码所占内存的大小;
根据所述热方法的代码所占内存的大小和所述热方法的起始地址得到所述热方法的结束地址。
30.如权利要求29所述的装置,其特征在于,还包括:
跨页判断模块,用于根据所述热方法的代码所占内存的大小和单一内存页大小判断所述热方法是否存在跨页,所述跨页用于指示某一方法占至少两个内存页的代码段内存;
地址访问模块,用于所述跨页判断模块得到所述热方法存在跨页时访问所述热方法的起始地址、中间地址和结束地址或所述跨页判断模块得到所述热方法不存在跨页时访问所述热方法的起始地址和结束地址,其中,所述中间地址用于指示同一方法的起始地址距离N个单一内存页大小的地址,所述N为非0正整数;
所述第二内存释放模块具体用于释放所述地址访问模块未访问的所述目标程序调用的方法所占的内存页。
31.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有可编程指令,当所述可编程指令在计算机上运行时,使得计算机执行权利要求1-15任选一所述的方法。
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711013628.5A CN109710396B (zh) | 2017-10-26 | 2017-10-26 | 一种信息采集及内存释放的方法及装置 |
BR112019000593A BR112019000593A2 (pt) | 2017-10-26 | 2018-06-28 | método, aparelho e mídia de armazenamento legível por computador para coletar informações |
PCT/CN2018/093302 WO2019080531A1 (zh) | 2017-10-26 | 2018-06-28 | 一种信息采集及内存释放的方法及装置 |
CA3029370A CA3029370A1 (en) | 2017-10-26 | 2018-06-28 | Method and apparatus for collecting information, and method and apparatus for releasing memory |
KR1020197002375A KR102205090B1 (ko) | 2017-10-26 | 2018-06-28 | 정보를 수집하는 방법 및 장치, 그리고 메모리를 해제하는 방법 및 장치 |
EP18826908.8A EP3518111A4 (en) | 2017-10-26 | 2018-06-28 | METHOD AND DEVICE FOR INFORMATION COLLECTION AND STORAGE RELEASE METHOD AND DEVICE |
US16/242,363 US11138034B2 (en) | 2017-10-26 | 2019-01-08 | Method and apparatus for collecting information, and method and apparatus for releasing memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711013628.5A CN109710396B (zh) | 2017-10-26 | 2017-10-26 | 一种信息采集及内存释放的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109710396A CN109710396A (zh) | 2019-05-03 |
CN109710396B true CN109710396B (zh) | 2023-08-22 |
Family
ID=66247139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711013628.5A Active CN109710396B (zh) | 2017-10-26 | 2017-10-26 | 一种信息采集及内存释放的方法及装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11138034B2 (zh) |
EP (1) | EP3518111A4 (zh) |
KR (1) | KR102205090B1 (zh) |
CN (1) | CN109710396B (zh) |
BR (1) | BR112019000593A2 (zh) |
CA (1) | CA3029370A1 (zh) |
WO (1) | WO2019080531A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110103987B (zh) * | 2019-05-21 | 2021-03-19 | 北京百度网讯科技有限公司 | 应用于自动驾驶车辆的决策规划方法和装置 |
CN110287030B (zh) * | 2019-06-28 | 2021-08-20 | 潍柴动力股份有限公司 | 内存使用方法和装置 |
CN111078318B (zh) * | 2019-12-18 | 2023-06-13 | Oppo广东移动通信有限公司 | 配置文件的处理方法、装置、系统及存储介质 |
CN111444023A (zh) * | 2020-04-13 | 2020-07-24 | 中国银行股份有限公司 | 一种数据的处理方法、装置、设备及可读存储介质 |
CN112988287B (zh) * | 2021-03-15 | 2022-07-08 | 上海益世界信息技术集团有限公司广州分公司 | 一种应用程序运行方法及装置 |
CN113268243B (zh) * | 2021-05-11 | 2024-02-23 | 网易(杭州)网络有限公司 | 内存预测方法及装置、存储介质、电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0999498A2 (en) * | 1998-11-05 | 2000-05-10 | Hewlett-Packard Company | Method for selecting active code traces for dynamic instruction translation |
US6189141B1 (en) * | 1998-05-04 | 2001-02-13 | Hewlett-Packard Company | Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control |
CN106502876A (zh) * | 2016-10-26 | 2017-03-15 | 腾讯科技(深圳)有限公司 | 一种热点函数确定的方法及相关设备 |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5590332A (en) * | 1995-01-13 | 1996-12-31 | Baker; Henry G. | Garbage collection, tail recursion and first-class continuations in stack-oriented languages |
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
US6862729B1 (en) * | 2000-04-04 | 2005-03-01 | Microsoft Corporation | Profile-driven data layout optimization |
US6658652B1 (en) * | 2000-06-08 | 2003-12-02 | International Business Machines Corporation | Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing |
US6971092B1 (en) * | 2001-08-24 | 2005-11-29 | Microsoft Corporation | System and method for analyzing data accesses of a trace from a computer-executable program to determine data access patterns |
US7577951B2 (en) * | 2002-05-30 | 2009-08-18 | Hewlett-Packard Development Company, L.P. | Performance of computer programs while they are running |
US6952821B2 (en) * | 2002-08-19 | 2005-10-04 | Hewlett-Packard Development Company, L.P. | Method and system for memory management optimization |
US7293259B1 (en) * | 2003-09-02 | 2007-11-06 | Sun Microsystems, Inc. | Dynamically configuring selected methods for instrument-based profiling at application run-time |
US7401324B1 (en) * | 2003-09-18 | 2008-07-15 | Sun Microsystems, Inc. | Method and apparatus for performing time measurements during instrumentation-based profiling |
US7293260B1 (en) * | 2003-09-26 | 2007-11-06 | Sun Microsystems, Inc. | Configuring methods that are likely to be executed for instrument-based profiling at application run-time |
US7568192B2 (en) * | 2003-09-29 | 2009-07-28 | International Business Machines Corporation | Automated scalable and adaptive system for memory analysis via identification of leak root candidates |
US8452938B1 (en) * | 2004-12-30 | 2013-05-28 | Azul Systems, Inc. | Garbage collection with memory quick release |
GB0515405D0 (en) * | 2005-07-27 | 2005-08-31 | Ibm | Memory leak detection |
US8099724B2 (en) * | 2006-02-28 | 2012-01-17 | Oracle America, Inc. | Fast patch-based method calls |
US7895579B2 (en) | 2006-06-16 | 2011-02-22 | Microsoft Corporation | Automated method and system for collecting and reporting API performance profiles |
WO2008155779A2 (en) * | 2007-06-20 | 2008-12-24 | Sanjeev Krishnan | A method and apparatus for software simulation |
US8745596B2 (en) * | 2009-02-05 | 2014-06-03 | Microsoft Corporation | Program debugging with dynamically inserted instrumentation |
US8595446B2 (en) * | 2009-11-25 | 2013-11-26 | Oracle America, Inc. | System and method for performing dynamic mixed mode read validation in a software transactional memory |
US8782614B2 (en) | 2011-04-08 | 2014-07-15 | Ca, Inc. | Visualization of JVM and cross-JVM call stacks |
CN102521089B (zh) * | 2011-11-23 | 2015-01-14 | 清华大学 | 硬件设备错误检测方法 |
US10445229B1 (en) * | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US8972975B1 (en) * | 2013-04-01 | 2015-03-03 | Google Inc. | Bounded installation time optimization of applications |
US20150095603A1 (en) | 2013-09-30 | 2015-04-02 | Samsung Electronics Co., Ltd. | Method and device for clearing process in electronic device |
US10175964B2 (en) * | 2014-09-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Compiler caching for runtime routine redundancy tracking |
CN106663060B (zh) | 2014-10-07 | 2019-11-19 | 谷歌有限责任公司 | 用于缓存线路去重的方法和系统 |
CN104407924B (zh) | 2014-10-31 | 2017-11-21 | 小米科技有限责任公司 | 内存优化方法及装置 |
CN104391798B (zh) * | 2014-12-09 | 2017-05-10 | 北京邮电大学 | 一种软件特征信息的提取方法 |
US10228858B1 (en) * | 2015-02-11 | 2019-03-12 | Violin Systems Llc | System and method for granular deduplication |
CN106155646B (zh) * | 2015-03-31 | 2020-01-07 | 阿里巴巴集团控股有限公司 | 一种限制外部应用程序调用服务的方法及装置 |
CN106326137B (zh) | 2015-07-02 | 2020-09-22 | 腾讯科技(深圳)有限公司 | 一种内存优化方法、装置及用户设备 |
CN105511942B (zh) * | 2015-12-02 | 2019-02-19 | 华为技术有限公司 | 语言虚拟机中热点中间代码的识别方法以及装置 |
CN106502785A (zh) | 2016-09-30 | 2017-03-15 | 维沃移动通信有限公司 | 一种移动终端的清理内存方法及装置 |
GB201704844D0 (en) * | 2017-03-27 | 2017-05-10 | Microsoft Technology Licensing Llc | Manual memory management using lazy patching |
CN107168848B (zh) * | 2017-04-28 | 2020-06-09 | 福建星瑞格软件有限公司 | 一种多线程分析与运行可视化方法 |
TWI647567B (zh) * | 2017-12-13 | 2019-01-11 | 國立中正大學 | 使用記憶體位址定位冷熱存取區間之方法 |
-
2017
- 2017-10-26 CN CN201711013628.5A patent/CN109710396B/zh active Active
-
2018
- 2018-06-28 BR BR112019000593A patent/BR112019000593A2/pt unknown
- 2018-06-28 KR KR1020197002375A patent/KR102205090B1/ko active IP Right Grant
- 2018-06-28 CA CA3029370A patent/CA3029370A1/en active Pending
- 2018-06-28 EP EP18826908.8A patent/EP3518111A4/en active Pending
- 2018-06-28 WO PCT/CN2018/093302 patent/WO2019080531A1/zh unknown
-
2019
- 2019-01-08 US US16/242,363 patent/US11138034B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6189141B1 (en) * | 1998-05-04 | 2001-02-13 | Hewlett-Packard Company | Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control |
EP0999498A2 (en) * | 1998-11-05 | 2000-05-10 | Hewlett-Packard Company | Method for selecting active code traces for dynamic instruction translation |
CN106502876A (zh) * | 2016-10-26 | 2017-03-15 | 腾讯科技(深圳)有限公司 | 一种热点函数确定的方法及相关设备 |
Non-Patent Citations (1)
Title |
---|
"JProfile Manual";anonymous;《http://web.archive.org/web/201710251947l1if_/https://www.ej-technologies.com/resources/jprofile/help/doc/help.pdf》;20171025;正文第42、118-119、123、205-206页 * |
Also Published As
Publication number | Publication date |
---|---|
US20190155641A1 (en) | 2019-05-23 |
EP3518111A4 (en) | 2020-10-07 |
US11138034B2 (en) | 2021-10-05 |
BR112019000593A2 (pt) | 2019-05-28 |
EP3518111A1 (en) | 2019-07-31 |
KR20190059890A (ko) | 2019-05-31 |
CN109710396A (zh) | 2019-05-03 |
KR102205090B1 (ko) | 2021-01-19 |
WO2019080531A1 (zh) | 2019-05-02 |
CA3029370A1 (en) | 2019-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109710396B (zh) | 一种信息采集及内存释放的方法及装置 | |
CN110312156B (zh) | 一种视频缓存方法、装置及可读存储介质 | |
US11144477B2 (en) | Method for processing reclaimable memory pages, electronic device, and computer-readable storage medium | |
CN110888821B (zh) | 一种内存管理方法及装置 | |
US10956316B2 (en) | Method and device for processing reclaimable memory pages, and storage medium | |
US10698837B2 (en) | Memory processing method and device and storage medium | |
WO2014173211A1 (en) | Code coverage testing method, device and system | |
CN112214247B (zh) | 一种系统启动方法以及相关设备 | |
EP3584710A1 (en) | Method and apparatus for controlling display of mobile terminal, storage medium, and electronic device | |
WO2020220971A1 (zh) | 一种文件加载方法、装置、电子设备及存储介质 | |
CN109408465A (zh) | 文件归属信息记录方法、装置、存储介质及终端 | |
CN114817978A (zh) | 数据访问方法及系统、硬件卸载设备、电子设备及介质 | |
CN107148612A (zh) | 一种扩展用户分区的方法和装置 | |
CN115934002B (zh) | 固态硬盘的访问方法、固态硬盘、存储系统及云服务器 | |
CN111459848B (zh) | 一种文件碎片的整理方法、装置、存储介质及电子设备 | |
CN114416178A (zh) | 数据访问方法、装置及非临时性计算机可读存储介质 | |
JP2018505489A (ja) | システムオンチップにおける動的メモリ利用 | |
CN101819589A (zh) | 一种控制文件输入输出缓存的方法及装置 | |
EP4120060A1 (en) | Method and apparatus of storing data,and method and apparatus of reading data | |
KR100652578B1 (ko) | 이동단말기의 메모리 관리 장치 및 방법 | |
CN109753340B (zh) | 虚拟机快照处理方法、装置及系统 | |
KR102334237B1 (ko) | 다중 포그라운드 어플리케이션을 위한 페이지 캐쉬 관리 방법 및 장치 | |
CN109542531B (zh) | 一种文件布局调整方法及装置 | |
EP4155895A1 (en) | Systems and methods for near-storage processing in solid state drives | |
CN105260231A (zh) | 一种降低物理磁盘io读写的方法 |
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 |