CN113722102B - 一种内存分配方法及装置 - Google Patents

一种内存分配方法及装置 Download PDF

Info

Publication number
CN113722102B
CN113722102B CN202111055554.8A CN202111055554A CN113722102B CN 113722102 B CN113722102 B CN 113722102B CN 202111055554 A CN202111055554 A CN 202111055554A CN 113722102 B CN113722102 B CN 113722102B
Authority
CN
China
Prior art keywords
memory
target application
application program
young
garbage collection
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
Application number
CN202111055554.8A
Other languages
English (en)
Other versions
CN113722102A (zh
Inventor
季涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Douyin Vision Co Ltd
Original Assignee
Douyin Vision Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Douyin Vision Co Ltd filed Critical Douyin Vision Co Ltd
Priority to CN202111055554.8A priority Critical patent/CN113722102B/zh
Publication of CN113722102A publication Critical patent/CN113722102A/zh
Application granted granted Critical
Publication of CN113722102B publication Critical patent/CN113722102B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Software Systems (AREA)
  • Memory System (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供了一种内存分配方法及装置,该方法首先接收目标应用程序的内存分配请求;然后,确定所述目标应用程序是否处于启动阶段;之后,在所述目标应用程序处于启动阶段的情况下,采用第一内存分配方式,基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,以使在所述年轻代内存的空闲内存不足时,将年轻代内存的垃圾回收功能禁用,并从老年代内存中选取空闲内存进行分配。本公开通过在目标应用程序处于启动阶段的情况下,采用第一内存分配方式,将垃圾回收功能禁用,从而避免在应用的启动阶段触发垃圾回收,提高应用启动的效率。

Description

一种内存分配方法及装置
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种内存分配方法及装置。
背景技术
垃圾回收(Garbage Collection,GC)作为一种自动内存管理方式,能够将开发者从开发过程中的内存分配与回收中解放出来,提升开发效率。但是当GC发生时,业务线程的运行会被中断。
flutter应用使用dart语言进行开发,dart采用分代GC的方式进行内存管理,内存分为年轻代内存和老年代内存,年轻代内存空间很小,老年代内存空间很大。flutter应用在启动时,需要加载一些必要的基础类库,年轻代内存空间并不足以支持这些对象的存储,导致年轻代内存GC的发生,导致线程运行被中断,进而影响应用启动速度。
发明内容
本公开实施例至少提供一种内存分配方法及装置。
第一方面,本公开实施例提供了一种内存分配方法,包括:
接收目标应用程序的内存分配请求;
确定所述目标应用程序是否处于启动阶段;
在所述目标应用程序处于启动阶段的情况下,采用第一内存分配方式,基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,在所述年轻代内存的空闲内存不足时,将年轻代内存的垃圾回收功能禁用,并从老年代内存中选取空闲内存进行分配。
一种可选的实施方式中,所述方法还包括:
在所述目标应用程序未处于启动阶段的情况下,采用第二内存分配方式,开启所述年轻代内存的垃圾回收功能,并基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,在所述年轻代内存的空闲内存不足时,利用所述垃圾回收功能释放所述年轻代内存中的待释放内存,从释放内存后的年轻代内存中选取空闲内存进行分配。
一种可选的实施方式中,所述开启所述年轻代内存的垃圾回收功能,包括:
通过预设的功能开启接口,调用所述目标应用程序的头文件中的功能开启方法,开启所述年轻代内存的垃圾回收功能。
一种可选的实施方式中,所述将年轻代内存的垃圾回收功能禁用,包括:
通过预设的功能禁用接口,调用所述目标应用程序的头文件中的功能禁用方法,将所述年轻代内存的垃圾回收功能禁用。
一种可选的实施方式中,所述方法还包括:
在所述目标应用程序未处于启动阶段的情况下,在所述年轻代内存的空闲内存小于预设阈值,或者,经过预设时间间隔时,利用所述年轻代内存的垃圾回收功能,确定并释放所述年轻代内存中的待释放内存。
一种可选的实施方式中,根据以下步骤确定所述目标应用程序处于启动阶段:
确定当前是否成功加载过所述目标应用程序的基准页面;
在未成功加载过所述目标应用程序的基准页面的情况下,确定所述目标应用程序处于启动阶段。
第二方面,本公开实施例还提供一种内存分配装置,包括:
接收模块,用于接收目标应用程序的内存分配请求;
确定模块,用于确定所述目标应用程序是否处于启动阶段;
分配模块,用于在所述目标应用程序处于启动阶段的情况下,采用第一内存分配方式,基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,以使在所述年轻代内存的空闲内存不足时,将年轻代内存的垃圾回收功能禁用,并从老年代内存中选取空闲内存进行分配。
在一种可选的实施方式中,所述分配模块还用于:
在所述目标应用程序未处于启动阶段的情况下,采用第二内存分配方式,开启所述年轻代内存的垃圾回收功能,并基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,在所述年轻代内存的空闲内存不足时,利用所述垃圾回收功能释放所述年轻代内存中的待释放内存,从释放内存后的年轻代内存中选取空闲内存进行分配。
一种可选的实施方式中,所述分配模块在开启所述年轻代内存的垃圾回收功能时,用于:
通过预设的功能开启接口,调用所述目标应用程序的头文件中的功能开启方法,开启所述年轻代内存的垃圾回收功能。
一种可选的实施方式中,所述分配模块在将年轻代内存的垃圾回收功能禁用时,用于:
通过预设的功能禁用接口,调用所述目标应用程序的头文件中的功能禁用方法,将所述年轻代内存的垃圾回收功能禁用。
一种可选的实施方式中,所述分配模块还用于:
在所述目标应用程序未处于启动阶段的情况下,在所述年轻代内存的空闲内存小于预设阈值,或者,经过预设时间间隔时,利用所述年轻代内存的垃圾回收功能,确定并释放所述年轻代内存中的待释放内存。
一种可选的实施方式中,所述确定模块具体用于:
确定当前是否成功加载过所述目标应用程序的基准页面;
在未成功加载过所述目标应用程序的基准页面的情况下,确定所述目标应用程序处于启动阶段。
第三方面,本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本公开实施例提供的内存分配方法,首先接收目标应用程序的内存分配请求;然后,确定所述目标应用程序是否处于启动阶段;之后,在所述目标应用程序处于启动阶段的情况下,采用第一内存分配方式,基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,以使在所述年轻代内存的空闲内存不足时,将年轻代内存的垃圾回收功能禁用,并从老年代内存中选取空闲内存进行分配。本公开通过在目标应用程序处于启动阶段的情况下,采用第一内存分配方式,将垃圾回收功能禁用,为目标应用程序分配年轻代内存,并在年轻代内存的空闲内存不足时从老年代内存中选取空闲内存进行分配,从而避免在应用的启动阶段触发垃圾回收,提高应用启动的效率。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种内存分配方法的流程图;
图2示出了本公开实施例所提供的另一种内存分配方法的流程图;
图3示出了本公开实施例所提供的一种内存分配装置的示意图;
图4示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
经研究发现,flutter应用在启动时,需要加载一些必要的基础类库,年轻代内存空间并不足以支持这些对象的存储,导致年轻代内存GC的发生,导致线程运行被中断,进而影响应用启动速度。
基于上述研究,本公开提供了一种内存分配方法及装置,通过在目标应用程序处于启动阶段的情况下,采用第一内存分配方式,将垃圾回收功能禁用,为目标应用程序分配年轻代内存,并在年轻代内存的空闲内存不足时从老年代内存中选取空闲内存进行分配,从而避免在应用的启动阶段触发垃圾回收,提高应用启动的效率。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种内存分配方法进行详细介绍,本公开实施例所提供的内存分配方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备。在一些可能的实现方式中,该内存分配方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
参见图1所示,为本公开实施例提供的内存分配方法的流程图,所述方法的执行主体以终端设备为例,该方法包括步骤S101~S103,其中:
S101、接收目标应用程序的内存分配请求。
该步骤中,目标应用程序可以在需要时向系统发送内存分配请求,终端设备可以通过虚拟机运行有执行本内存分配方法的程序,该程序在运行时,可以拦截目标应用程序的内存分配请求,并通过该程序进行内存的分配。
其中,目标应用程序可以为使用dart语言开发的应用,如flutter应用。Dart语言开发的应用采用分代垃圾回收的方式进行内存管理,内存通常分为年轻代内存和老年代内存,年轻代内存的存储空间较小,老年代内存的存储空间较大。当flutter应用启动时,需要加载一些必要的基础类库,这些基础类库通常需要占用大量的内存存储空间,年轻代内存空间不足以支撑这些对象的存储,通常会导致年轻代内存发生垃圾回收,导致线程的运行被中断,影响flutter应用启动的速度。
S102、确定所述目标应用程序是否处于启动阶段。
该步骤中,由于目标应用程序在启动阶段时需要加载基础类库,导致年轻代内存发生垃圾回收,影响目标应用程序的启动速度,因此,可以先判断目标应用程序是否处于启动阶段,在处于启动阶段时再进行特殊的内存分配处理。
示例性的,可以通过以下步骤确定目标应用程序是否处于启动阶段:
确定当前是否成功加载过所述目标应用程序的基准页面;
在未成功加载过所述目标应用程序的基准页面的情况下,确定所述目标应用程序处于启动阶段。
通常,在目标应用程序在启动时会固定加载一个或多个初始页面,在启动阶段结束时,通常停留在一固定界面上,因此,可以选取一个页面作为基准页面,若目标应用程序已经成功加载过目标应用程序的基准页面,则可以判断目标应用程序已经启动完毕,若尚未成功加载过基准页面,则说明目标应用程序仍处于启动阶段。
S103、在所述目标应用程序处于启动阶段的情况下,采用第一内存分配方式,基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,以使在所述年轻代内存的空闲内存不足时,将年轻代内存的垃圾回收功能禁用,并从老年代内存中选取空闲内存进行分配。
针对目标应用程序的启动阶段和非启动阶段,可以分别准备两种内存分配方式,对于启动阶段,由于启动阶段需要加载大量的基础类库文件,需要频繁触发垃圾回收功能以保证年轻代内存可用,从而导致线程被中断,可以采用第一内存分配方式,第一内存分配方式将年轻代内存的垃圾回收功能禁用,并为目标应用程序分配优先分配年轻代内存,这样,在年轻代内存的空闲内存不足以进行内存分配时,由于年轻代内存的垃圾回收功能被禁用,会从老年代内存中选取空闲内存进行分配,从而在启动阶段避免线程中断,提高目标应用程序的启动速度。
示例性的,可以通过以下步骤将年轻代内存的垃圾回收功能禁用:
通过预设的功能禁用接口,调用所述目标应用程序的头文件中的功能禁用方法,将所述年轻代内存的垃圾回收功能禁用。
其中,功能禁用接口可以为预先配置好的接口,目标应用程序可以为flutter应用,功能禁用接口可以为flutter应用的软件开发工具包(Software Development Kit,sdk)接口,通过在目标应用程序中引用预先配置好的头文件,再利用功能禁用接口调用引用的头文件中的功能禁用方法,可以使虚拟机采用第一内存分配方式,禁用年轻代内存的垃圾回收功能。
在目标应用程序未处于启动阶段的情况下,不需要加载基础类库文件,通常不需要为其分配大量的内存,因此,可以采用第二内存分配方式。其中,第二内存分配方式可以为应用程序在一般情况下的默认分配方式,采用第二内存分配方法,可以开启在启动阶段禁用的年轻代内存的垃圾回收功能,在进行内存分配时,可以优先为目标应用程序分配年轻代内存,若年轻代内存的空闲内存不足以进行内存分配,则可以利用年轻代内存的垃圾回收功能释放年轻代内存中的待释放内存,再从释放内存后的年轻代内存中选取空闲内存进行分配,使内存分配能够正常执行。
示例性的,可以通过预设的功能开启接口,调用目标应用程序头文件中的功能开启方法,开启年轻代内存的垃圾回收功能。
与禁用垃圾回收功能的方式类似,功能开启接口同样可以为预先设置的SDK接口,目标应用程序的头文件中引用了预先配置好的头文件,再利用功能开启接口调用引用的头文件中的功能开启方法,可以使虚拟机采用第二内存分配方式,开启年轻代内存的垃圾回收功能。
除了在进行内存分配时利用垃圾回收功能释放年轻代内存外,终端设备还可以主动调用垃圾回收功能来释放年轻代内存,示例性的,可以在目标应用程序未处于启动阶段的情况下,在年轻代内存的空闲内存小于预设阈值,或者,经过预设时间间隔时,利用年轻代内存的垃圾回收功能,确定并释放年轻代内存中的待释放内存。
参见图2所示,为本公开实施例提供的另一种内存分配方法的流程图。该方法在检测到内存分配事件后判断目标应用程序是否处于启动阶段,若不处于启动阶段,则直接进行默认的内存分配,优先从年轻代内存分配内存,若年轻代内存的空闲内存不足则触发垃圾回收功能,并从释放后的年轻代内存进行分配;若处于启动阶段,则判断年轻代内存的空闲内存是否充足,若充足,则直接利用年轻代内存分配内存,若不足,则将年轻代内存的垃圾回收功能禁用,从老年代内存进行分配。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与内存分配方法对应的内存分配装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述内存分配方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图3所示,为本公开实施例提供的一种内存分配装置的示意图,所述装置包括:
接收模块310,用于接收目标应用程序的内存分配请求;
确定模块320,用于确定所述目标应用程序是否处于启动阶段;
分配模块330,用于在所述目标应用程序处于启动阶段的情况下,采用第一内存分配方式,基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,以使在所述年轻代内存的空闲内存不足时,将年轻代内存的垃圾回收功能禁用,并从老年代内存中选取空闲内存进行分配。
在一种可选的实施方式中,所述分配模块330还用于:
在所述目标应用程序未处于启动阶段的情况下,采用第二内存分配方式,开启所述年轻代内存的垃圾回收功能,并基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,在所述年轻代内存的空闲内存不足时,利用所述垃圾回收功能释放所述年轻代内存中的待释放内存,从释放内存后的年轻代内存中选取空闲内存进行分配。
一种可选的实施方式中,所述分配模块330在开启所述年轻代内存的垃圾回收功能时,用于:
通过预设的功能开启接口,调用所述目标应用程序的头文件中的功能开启方法,开启所述年轻代内存的垃圾回收功能。
一种可选的实施方式中,所述分配模块330在将年轻代内存的垃圾回收功能禁用时,用于:
通过预设的功能禁用接口,调用所述目标应用程序的头文件中的功能禁用方法,将所述年轻代内存的垃圾回收功能禁用。
一种可选的实施方式中,所述分配模块330还用于:
在所述目标应用程序未处于启动阶段的情况下,在所述年轻代内存的空闲内存小于预设阈值,或者,经过预设时间间隔时,利用所述年轻代内存的垃圾回收功能,确定并释放所述年轻代内存中的待释放内存。
一种可选的实施方式中,所述确定模块320具体用于:
确定当前是否成功加载过所述目标应用程序的基准页面;
在未成功加载过所述目标应用程序的基准页面的情况下,确定所述目标应用程序处于启动阶段。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
对应于图1中的内存分配方法,本公开实施例还提供了一种电子设备400,如图4所示,为本公开实施例提供的电子设备400结构示意图,包括:
处理器41、存储器42、和总线43;存储器42用于存储执行指令,包括内存421和外部存储器422;这里的内存421也称内存储器,用于暂时存放处理器41中的运算数据,以及与硬盘等外部存储器422交换的数据,处理器41通过内存421与外部存储器422进行数据交换,当所述电子设备400运行时,所述处理器41与所述存储器42之间通过总线43通信,使得所述处理器41执行以下指令:
接收目标应用程序的内存分配请求;
确定所述目标应用程序是否处于启动阶段;
在所述目标应用程序处于启动阶段的情况下,采用第一内存分配方式,基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,在所述年轻代内存的空闲内存不足时,将年轻代内存的垃圾回收功能禁用,并从老年代内存中选取空闲内存进行分配。
一种可选的实施方式中,所述处理器41还用于执行:
在所述目标应用程序未处于启动阶段的情况下,采用第二内存分配方式,开启所述年轻代内存的垃圾回收功能,并基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,在所述年轻代内存的空闲内存不足时,利用所述垃圾回收功能释放所述年轻代内存中的待释放内存,从释放内存后的年轻代内存中选取空闲内存进行分配。
一种可选的实施方式中,所述处理器41执行的指令中,所述开启所述年轻代内存的垃圾回收功能,包括:
通过预设的功能开启接口,调用所述目标应用程序的头文件中的功能开启方法,开启所述年轻代内存的垃圾回收功能。
一种可选的实施方式中,所述处理器41执行的指令中,所述将年轻代内存的垃圾回收功能禁用,包括:
通过预设的功能禁用接口,调用所述目标应用程序的头文件中的功能禁用方法,将所述年轻代内存的垃圾回收功能禁用。
一种可选的实施方式中,所述处理器41还用于执行:
在所述目标应用程序未处于启动阶段的情况下,在所述年轻代内存的空闲内存小于预设阈值,或者,经过预设时间间隔时,利用所述年轻代内存的垃圾回收功能,确定并释放所述年轻代内存中的待释放内存。
一种可选的实施方式中,所述处理器41执行的指令中,所述确定所述目标应用程序是否处于启动阶段,包括:
确定当前是否成功加载过所述目标应用程序的基准页面;
在未成功加载过所述目标应用程序的基准页面的情况下,确定所述目标应用程序处于启动阶段。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的内存分配方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的内存分配方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种内存分配方法,其特征在于,包括:
接收目标应用程序的内存分配请求;
确定所述目标应用程序是否处于启动阶段;
在所述目标应用程序处于启动阶段的情况下,采用第一内存分配方式,基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,在所述年轻代内存的空闲内存不足时,将年轻代内存的垃圾回收功能禁用,并从老年代内存中选取空闲内存进行分配。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述目标应用程序未处于启动阶段的情况下,采用第二内存分配方式,开启所述年轻代内存的垃圾回收功能,并基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,在所述年轻代内存的空闲内存不足时,利用所述垃圾回收功能释放所述年轻代内存中的待释放内存,从释放内存后的年轻代内存中选取空闲内存进行分配。
3.根据权利要求2所述的方法,其特征在于,所述开启所述年轻代内存的垃圾回收功能,包括:
通过预设的功能开启接口,调用所述目标应用程序的头文件中的功能开启方法,开启所述年轻代内存的垃圾回收功能。
4.根据权利要求1所述的方法,其特征在于,所述将年轻代内存的垃圾回收功能禁用,包括:
通过预设的功能禁用接口,调用所述目标应用程序的头文件中的功能禁用方法,将所述年轻代内存的垃圾回收功能禁用。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述目标应用程序未处于启动阶段的情况下,在所述年轻代内存的空闲内存小于预设阈值,或者,经过预设时间间隔时,利用所述年轻代内存的垃圾回收功能,确定并释放所述年轻代内存中的待释放内存。
6.根据权利要求1所述的方法,其特征在于,根据以下步骤确定所述目标应用程序处于启动阶段:
确定当前是否成功加载过所述目标应用程序的基准页面;
在未成功加载过所述目标应用程序的基准页面的情况下,确定所述目标应用程序处于启动阶段。
7.一种内存分配装置,其特征在于,包括:
接收模块,用于接收目标应用程序的内存分配请求;
确定模块,用于确定所述目标应用程序是否处于启动阶段;
分配模块,用于在所述目标应用程序处于启动阶段的情况下,采用第一内存分配方式,基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,在所述年轻代内存的空闲内存不足时,将年轻代内存的垃圾回收功能禁用,并从老年代内存中选取空闲内存进行分配。
8.根据权利要求7所述的装置,其特征在于,所述分配模块还用于:
在所述目标应用程序未处于启动阶段的情况下,采用第二内存分配方式,开启所述年轻代内存的垃圾回收功能,并基于所述内存分配请求,优先为所述目标应用程序分配年轻代内存,在所述年轻代内存的空闲内存不足时,利用所述垃圾回收功能释放所述年轻代内存中的待释放内存,从释放内存后的年轻代内存中选取空闲内存进行分配。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至6任一所述的内存分配方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至6任意一项所述的内存分配方法的步骤。
CN202111055554.8A 2021-09-09 2021-09-09 一种内存分配方法及装置 Active CN113722102B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111055554.8A CN113722102B (zh) 2021-09-09 2021-09-09 一种内存分配方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111055554.8A CN113722102B (zh) 2021-09-09 2021-09-09 一种内存分配方法及装置

Publications (2)

Publication Number Publication Date
CN113722102A CN113722102A (zh) 2021-11-30
CN113722102B true CN113722102B (zh) 2023-08-04

Family

ID=78682876

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111055554.8A Active CN113722102B (zh) 2021-09-09 2021-09-09 一种内存分配方法及装置

Country Status (1)

Country Link
CN (1) CN113722102B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737358A (zh) * 2022-10-28 2023-09-12 荣耀终端有限公司 内存刷新方法和电子设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7584231B1 (en) * 2006-05-25 2009-09-01 Sun Microsystems, Inc. Methods for determining a safe end of scan for generational garbage collection
CN103514102A (zh) * 2013-10-25 2014-01-15 中国联合网络通信集团有限公司 一种Java虚拟机实现内存垃圾回收的方法及装置
CN108628678A (zh) * 2017-03-21 2018-10-09 中国移动通信集团河北有限公司 内存参数的确定方法、装置及设备
CN109117242A (zh) * 2017-06-22 2019-01-01 龙芯中科技术有限公司 虚拟机垃圾回收调优方法、装置、电子设备及存储介质
CN109669759A (zh) * 2018-09-25 2019-04-23 深圳壹账通智能科技有限公司 Java虚拟机的垃圾回收方法、装置、设备和存储介质
CN110442432A (zh) * 2019-08-22 2019-11-12 北京三快在线科技有限公司 业务处理方法、系统、装置、设备及存储介质
CN112000424A (zh) * 2020-07-17 2020-11-27 北京达佳互联信息技术有限公司 应用程序的控制方法、装置、终端及存储介质
CN112749102A (zh) * 2021-01-15 2021-05-04 苏州浪潮智能科技有限公司 一种内存空间垃圾回收处理方法、装置、设备及介质
CN113010367A (zh) * 2020-11-02 2021-06-22 证通股份有限公司 针对java进程垃圾回收的监控方法及监控系统

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7584231B1 (en) * 2006-05-25 2009-09-01 Sun Microsystems, Inc. Methods for determining a safe end of scan for generational garbage collection
CN103514102A (zh) * 2013-10-25 2014-01-15 中国联合网络通信集团有限公司 一种Java虚拟机实现内存垃圾回收的方法及装置
CN108628678A (zh) * 2017-03-21 2018-10-09 中国移动通信集团河北有限公司 内存参数的确定方法、装置及设备
CN109117242A (zh) * 2017-06-22 2019-01-01 龙芯中科技术有限公司 虚拟机垃圾回收调优方法、装置、电子设备及存储介质
CN109669759A (zh) * 2018-09-25 2019-04-23 深圳壹账通智能科技有限公司 Java虚拟机的垃圾回收方法、装置、设备和存储介质
CN110442432A (zh) * 2019-08-22 2019-11-12 北京三快在线科技有限公司 业务处理方法、系统、装置、设备及存储介质
CN112000424A (zh) * 2020-07-17 2020-11-27 北京达佳互联信息技术有限公司 应用程序的控制方法、装置、终端及存储介质
CN113010367A (zh) * 2020-11-02 2021-06-22 证通股份有限公司 针对java进程垃圾回收的监控方法及监控系统
CN112749102A (zh) * 2021-01-15 2021-05-04 苏州浪潮智能科技有限公司 一种内存空间垃圾回收处理方法、装置、设备及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Java垃圾收集机制及性能调节;曾天慧等;《计算机工程与设计》;20060916(第17期);138-140 *

Also Published As

Publication number Publication date
CN113722102A (zh) 2021-11-30

Similar Documents

Publication Publication Date Title
EP2557498B1 (en) Updating method and computer system for hypervisor components
CN113296792B (zh) 存储方法、装置、设备、存储介质和系统
CN102667714B (zh) 支持访问由操作系统环境外的资源提供的功能的方法和系统
CN109960569B (zh) 一种虚拟化处理方法及装置
EP4030289A1 (en) Method and device for virtual machine memory management
US20120198431A1 (en) Method for upgrading hypervisor component and computer system
CN111385296B (zh) 一种业务进程重启方法、装置、存储介质以及系统
CN113722102B (zh) 一种内存分配方法及装置
CN106250125A (zh) 获取日志的方法及装置
CN110750336A (zh) 一种OpenStack虚拟机内存热扩容方法
JP2016533588A (ja) 記憶処理方法、装置及び端末
US20140189449A1 (en) Method and system for checking software
CN112199042A (zh) 存储空间管理方法、装置、芯片、设备及存储介质
CN113504997B (zh) 应用程序安装包文件的处理方法、装置、设备及介质
CN109558241A (zh) 一种获取自旋锁的方法及装置
CN114185645B (zh) 一种内存处理方法及装置
CN116450328A (zh) 内存分配方法、装置、计算机设备和存储介质
US20050027954A1 (en) Method and apparatus to support the maintenance and reduction of FLASH utilization as it pertains to unused or infrequently referenced FLASH data
CN111984299A (zh) 一种数据加载的方法和设备
CN110618791B (zh) 一种cfs存储域配置方法、装置、设备及可读存储介质
CN116126735B (zh) 一种代码异常处理方法、装置、设备及存储介质
CN116502225B (zh) 自适应分组冗余编排的病毒扫描方法、装置及电子设备
CN115878204B (zh) 一种操作系统的处理方法、装置、计算机设备和介质
CN111737013B (zh) 芯片的资源管理方法、装置、存储介质及系统芯片
CN106681771A (zh) 一种系统重装方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant after: Tiktok vision (Beijing) Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant before: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd.

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant after: Douyin Vision Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant before: Tiktok vision (Beijing) Co.,Ltd.

GR01 Patent grant
GR01 Patent grant