CN107430492A - 空闲时间软件垃圾收集 - Google Patents
空闲时间软件垃圾收集 Download PDFInfo
- Publication number
- CN107430492A CN107430492A CN201680018489.2A CN201680018489A CN107430492A CN 107430492 A CN107430492 A CN 107430492A CN 201680018489 A CN201680018489 A CN 201680018489A CN 107430492 A CN107430492 A CN 107430492A
- Authority
- CN
- China
- Prior art keywords
- idle period
- task
- software
- future idle
- future
- 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
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
- G06F12/0269—Incremental or concurrent garbage collection, e.g. in real-time systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/70—Details relating to dynamic memory management
- G06F2212/702—Conservative garbage collection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Debugging And Monitoring (AREA)
Abstract
计算设备在处理器空闲期间为软件应用排程软件垃圾收集。确定在执行一个或多个软件应用期间处理器处于空闲状态的未来空闲时间段,并且对未来空闲时间段测量存储器分配。多个预定的软件垃圾收集事件中的一个基于所确定的未来空闲时间段和所估计的存储器分配,并且被排程为在未来空闲时间段期间执行。然后在未来空闲时间段期间执行所选择的软件垃圾收集事件。
Description
背景技术
垃圾收集是一种自动存储器管理的形式,其中运行时环境尝试回收由在环境中操作的软件应用不再使用的数据对象占用的存储器。软件垃圾收集的一个目标可能是释放存储器以提供更精简的操作环境,从而提高操作效率。但是,软件垃圾收集可能会在不可预测的时间点发生,并可能对用户体验产生负面影响。例如,软件垃圾收集可能导致用户界面的呈现暂停或在用户与用户界面交互的时间段期间暂停。此外,要标记用于垃圾收集的存储器量通常会变化,并且可能需要扩展执行时间才能释放未使用的应用存储器。
发明内容
主题技术提供了一种用于在处理器空闲时间段期间排程软件垃圾收集的系统和计算机实现的方法。在一个或多个实现中,该方法包括:确定在执行一个或多个软件应用期间一个或多个处理器将处于空闲状态的未来空闲时间段;对于未来空闲时间段,估计对所述一个或多个软件应用的存储器分配;基于所确定的未来空闲时间段和所估计的存储器分配,选择多个预定软件垃圾收集事件之一;排程所选择的软件垃圾收集事件以在未来空闲时间段期间执行;以及在未来空闲时间段期间执行所选择的软件垃圾收集事件。其他方面包括用于实现计算机实现的方法的相应系统、装置和计算机程序产品。
在一个或多个实现中,系统包括一个或多个处理器和包括指令的存储器。所述指令在由所述一个或多个处理器执行时使得所述一个或多个处理器促进以下步骤:确定在执行一个或多个软件应用期间一个或多个处理器将处于空闲状态的未来空闲时间段;对于未来空闲时间段,估计对所述一个或多个软件应用的存储器分配;基于所确定的未来空闲时间段和所估计的存储器分配,选择多个预定软件垃圾收集事件之一;排程所选择的软件垃圾收集事件以在未来空闲时间段期间执行;以及在未来空闲时间段期间执行所选择的软件垃圾收集事件。其他方面包括用于实现上述系统的对应装置和计算机程序产品。
在一个或多个实现中,计算机可读存储介质包括指令,所述指令当被执行时,促进以下步骤:确定在执行一个或多个软件应用期间一个或多个处理器将处于空闲状态的未来空闲时间段;对于所述未来空闲时间段,估计对所述一个或多个软件应用的存储器分配;基于所确定的未来空闲时间段和所述估计的存储器分配,选择多个预定软件垃圾收集任务之一;排程所选择的软件垃圾收集任务以在所述未来空闲时间段期间执行;以及在所述未来空闲时间段期间执行所选择的软件垃圾收集事件。其他方面包括用于实现上述计算机可读存储介质的对应方法,装置和计算机程序产品。
应当理解,从下面的详细描述中,对本领域技术人员将变得显而易见的是本主题技术的其它配置,其中通过说明的方式示出和描述了主题技术的各种配置。如将实现的,主题技术能够具有其他和不同的配置,并且其各种细节能够在各种其他方面进行修改,而不脱离本技术的范围。因此,附图和详细描述在本质上被认为是说明性的而不是限制性的。
附图说明
将参照附图进行详细描述:
图1描绘了包括用于在处理器空闲时间段期间排程软件垃圾收集的示例组件的示例系统
图2描绘了包括空闲任务的待处理任务的示例排程的图。
图3描绘了用于在处理器空闲时间段期间排程软件垃圾收集的第一示例过程的流程图。
图4是图示出与在处理器空闲时间段期间排程软件垃圾收集关联使用的示例电子系统的图。
具体实施方式
以下阐述的详细描述旨在作为本发明技术的各种配置的描述,并不旨在表示可以实践主题技术的唯一配置。附图并入本文,并构成详细描述的一部分。详细描述包括具体细节,目的是提供对主题技术的透彻理解。然而,对于本领域的技术人员来说,显而易见的是,主题技术不限于这里阐述的具体细节,并且可以在没有这些具体细节的情况下实践。在一些情况下,以框图的形式示出了众所周知的结构和组件,以避免模糊主题技术的概念。
主题技术包括用于在处理器空闲时间段期间排程软件垃圾收集以减少使用垃圾收集以释放用于软件应用的存储器的系统中的不均衡性能的机制。存储器管理器和任务排程器(例如,后端软件组件)执行若干运行时估计,以确定是否以及在什么时候运行软件应用所使用的存储器应该被垃圾收集,以减少垃圾收集对应用的性能的负面影响。在这方面,存储器管理器和任务排程器确定处理器的未来空闲时间,当出现这些空闲时间时可能需要多少垃圾收集,对完成估计的垃圾收集所需的垃圾收集事件进行优先级排序,并且在确定的空闲时间期间排程经优先级排序的垃圾收集事件。
作为示例,排程器排程系统和应用任务,通过不同的任务类型(例如,合成器任务、通用任务等)组织任务,并且决定在特定时间执行哪种类型的任务。任务排程器确定处理器将处于空闲状态的未来时间段。排程器还确定哪些任务可以分类为空闲任务;例如系统或执行应用的当前操作不需要的任务。垃圾收集是可能被分类为空闲任务的示例任务。排程器保持一个待处理空闲任务的队列,并可以在任务执行的空闲时间段期间排程这些任务。
存储器管理器估计已经分配了多少存储器,并且估计在由排程器确定的未来空闲时间可以分配多少存储器。因此,可以在适当的空闲时间排程垃圾收集。例如,存储器管理器可以确定已经分配了x MB,并且分配速率是y MB/ms。如果下一个空闲时间为3ms,则估计x+3y MB将在下一个空闲时间内分配。基于该计算,存储器管理器可以例如基于过去的垃圾收集事件估计对存储器进行垃圾收集可能需要多长时间。
存储器管理器可以为多个不同的垃圾收集事件提供时间估计,包括用于新分配的对象的垃圾收集标记、用于旧对象的垃圾收集标记、垃圾收集完结和存储器扫描。每次可以基于与即将到来的空闲时间相对应的相应事件和估计的存储器分配来进行估计。由于即将到来的空闲时间可能长得不足以完成整个事件,因此存储器管理器可能将事件分解成更小的操作块。例如,用于垃圾收集的旧对象的标记可以被分成增量标记步骤。存储器管理器可以考虑在若干待处理空闲时间内估计的存储器分配而计算每个步骤的时间估计。
当存储器分配已经达到或估计达到阈值分配时,存储器管理器可能仅尝试排程垃圾收集事件。阈值分配可以是例如需要在预定时间(例如,在下一个空闲时间)或以预定阈值分配速率分配的预定量的存储器。存储器管理器可以将垃圾收集事件及其估计的完成时间作为空闲事件添加到任务排程器,并且排程器可以基于事件大小和排程的空闲时间来选择事件。垃圾收集事件可以按FIFO(先入先出)顺序聚组。例如,可能需要多个事件来递增地标记对象,并且每个事件可以被排程为时间分段的块(例如,10ms、20ms、50ms等)。垃圾收集事件可以被排程来在未来空闲时间段内按其排程顺序执行。
图1描述了根据主题技术的一个或多个方面的包括用于在处理器空闲时间段期间排程软件垃圾收集的示例组件的示例系统100。系统100包括处理器102和存储器104。当应用进程106开始时,与进程相对应的可执行文件被映射到为进程106分配的存储器104中的虚拟地址空间中。虚拟地址空间还可以包括对象堆108。可以使对象堆108可用于映射到地址空间中的附加库。对象堆108可以由应用或应用操作的运行时环境(包括例如操作系统或虚拟机)来管理。该管理可以包括在进程106的执行期间释放存储器空间的垃圾收集。应用进程106可以是web应用、从Web应用中的脚本编译或编译的动态编程语言得到的执行进程或能够在运行时环境内执行的其他应用。
系统100进一步包括任务排程器110,其在任何给定时间决定哪些任务在主线程上执行。因此,任务排程器110使延迟敏感任务(例如,输入事件或合成器更新)的优先级排序。在一个或多个实现中,任务排程器110包括多个软件组件,其中一个或多个组件是根据主题技术适应的软件垃圾收集器的一部分或嵌入在其中。另外或替代地,任务排程器110可以包括与软件垃圾收集器通信的一个或多个组件(例如,经由API(应用编程接口))。在这方面,任务排程器110的一个或多个组件可以向垃圾收集器内的任务排程相关组件通知处理器空闲时间。因此,任务排程器110的组件使任务能够被发布到不同的任务类型(例如,合成器任务、垃圾收集任务、通用任务等),其使任务排程器的组件(例如,在垃圾收集器内)能够决定在特定时间应当执行哪种类型的任务。任务排程器110可以将任务归类为空闲任务。
任务排程器110保持待处理空闲任务的队列,并且将在执行的空闲时间段期间排程这些任务。任务排程器110可以使用来自关于帧开始和提交事件的绘图合成器112的通知,以及当前待处理的其他任务(例如,较高优先级的任务)的状态来当空闲事件不会导致帧延迟的增加时排程空闲事件。也可以例如在没有通过绘图合成器112提交帧的较长的空闲时间段期间执行空闲任务。任务排程器110可以相对于其他任务重新排序任务。每个任务可以与由任务排程器110提供的任务期限相关联。如果在截止期限到期之前不能完成任务,则可以重新排程任务以在下一个空闲时间段期间执行。
在空闲时间段期间,排程器可以从待处理队列中取得最早的任务,并且以小于或等于剩余空闲时间段时间的最后期限排程其执行。如果任务在此期限之前完成,那么排程器可以继续以FIFO(先进先出)顺序执行空闲任务,直到最后期限为止。空闲任务只能执行一次,并且当执行的任务排程器110可以确定该任务是否可以在截止期限到期之前允许的时间内进行任何有用的工作。如果没有任何有用的工作可以完成,任务可能不会被执行,而是重发到空闲队列。大多数空闲任务可以例如在帧之间执行。在这方面,期限可以是x持续时间的时间段,例如小于或等于10ms、25ms、50ms等等。
在一些实现中,发布到任务排程器110的空闲任务可以被附加到传入空闲任务队列。在新的空闲时间段开始时,传入任务可以被冲刷到待处理的空闲任务队列,其中任务排程器110可以以FIFO方式执行它们。在这个例子中,空闲的任务可能在它们自己的执行期间重新发布自己,即使在截止期限到期之前它们不能做真正的工作。在一个或多个实现中,任务排程器110可以偏好优先于空闲任务在空闲时间期间排程更高优先级的任务(例如,合成器或输入任务)。
任务排程器110可以使用各种信号来决定何时开始和结束空闲时间段。例如,任务排程器110可以使用来自软件绘图合成器112的输入(例如,负责绘制用户界面或其一部分的软件运行时环境或应用进程的一部分),以确保空闲任务仅在当帧已经提交时的时间和下一帧预期开始的时间之间被排程。因此,对于帧间时间的空闲时间段是有限的,并且当合成器不活动时(由于没有画出帧)不会发生空闲时间段。一个示例可以包括发布延迟任务,如果在一段时间内没有绘制帧,则其触发空闲时间段。
如图1所示,系统100进一步可以包括存储器管理器114。存储器管理器114管理用于软件运行时环境的存储器,并且被配置为基于所确定的存储器分配来监视存储器分配并将垃圾收集事件(作为任务)发布到任务排程器110。如前所述,存储器管理器114可以估计已经分配了多少存储器,以及任务排程器110确定的将来空闲时间内可以分配多少存储器。
存储器管理器114可以例如轮询任务排程器110来确定下一个空闲时间,并且基于分配速率来确定接着的空闲时间将分配多少存储器。存储器管理器114然后可以例如基于估计的存储器分配和过去的垃圾收集事件估计垃圾收集存储器可能需要多长时间。例如,存储器管理器114可以基于应用的平均存储器分配速率、年轻和/或旧对象的平均垃圾收集时间(例如,每MB)以及平均标记速度(例如,每MB)来估计垃圾收集的持续时间。用于估计垃圾收集事件的持续时间的其他示例因素可以包括堆状态(例如,分段、一致、损坏的百分比)、提交的堆的百分比、空闲、保留、分配负载和标记速度(例如,基于过去的速度)。
存储器管理器114可以触发增量垃圾收集(例如,从0ms-XXms线性配置)、清除(例如大约5-10ms)和长整个垃圾收集(例如,30-XXXms)。存储器管理器114可以将每个垃圾收集事件发布到任务排程器110,包括要完成的任务的估计时间。在一些实现中,如果较大事件或任务超过预定长度,则存储器管理器114将所述较大事件或任务分解成更小的块,或者将垃圾收集事件组织成预定持续时间(例如10ms或50ms)的任务。
在一个或多个实现中,任务排程器110保持待处理任务(包括垃圾收集任务)的全局列表,并对它们进行优先排序。在一个示例中,存储器管理器114可以将垃圾收集事件或事件的一部分作为空闲任务发布到主线程,包括任务的优先级和事件的类型(例如,标记、完结、扫描、压缩)以及任务的估计执行时间。以这种方式,存储器管理器114可以将垃圾收集任务发布到任务排程器110,并且绘图合成器112可以通知任务计划110关于运行待处理空闲任务的良好机会,并且任务排程器110然后可以确定要运行哪个任务以及在什么时间运行。
任务管理器110和存储器管理器114可以在运行时环境(例如,虚拟机)之外实现以管理任务组织和优先级,以及在运行时环境内创建的对象的垃圾收集(例如,通过一个或多个API)。附加地或替选地,任务管理器110和存储器管理器114的组件可以是运行时环境的一部分或嵌入在运行时环境中。运行时环境可以是Web浏览器应用的一部分或嵌入在web浏览器应用中,和/或负责web应用(例如,JAVASCRIPT、JAVA小应用程序)和在运行时环境内运行的其他动态编程语言。在一个或多个实现中,绘图合成器112可以是负责重新绘制用于应用进程106的显示器(例如,窗口)内的帧的运行时环境的显示渲染组件。
图2描绘了根据主题技术方面的包括空闲任务的待处理任务的示例计划200的图。任务排程器110从绘图合成器112接收帧开始时间202的通知(例如,基于预定的帧速率),并且基于帧开始时间202设置任务排程。所描绘的示例包括三个帧开始时间202,其定义两个连续任务时间段。任务排程器110从应用106和/或运行时环境接收应用任务,并组织它们,以便基于帧速率减少或消除绘制延迟。例如,任务排程器110可监视关于帧开始的消息(例如,来自合成器112)的运行时环境的命令队列,并确定连续的开始时间202之间的空闲时间段204、206。
如图所示,任务排程器110可以首先排程基本任务,诸如输入任务208(例如,定义用户输入的键或命令)和合成器任务210(例如,绘制帧),剩余时间直到定义空闲时间段204、206的下一个帧开始。在一个或多个实现中,可以例如从帧结束(例如帧提交)到下一帧开始时间202确定空闲时间段204、206。任务排程器110可以使用空闲时间段204、206来将任务发布到任务队列中,其包括垃圾收集任务。
在一些方面,空闲任务(例如,垃圾收集任务)可能不能在空闲时间段内完成。例如,任务排程器110可以尝试将空闲任务212(50ms的任务)发布到空闲时间段204。然而,任务管理器110已经在空闲时间段204期间排程了一个或多个高优先级任务214,留下小于50ms可用于完成空闲任务212。在这种情况下,示例空闲任务212立即返回并被重新发布到具有足够长的持续时间以完成重发的任务的后续空闲时间段,例如图2中的空闲时间段206。
在一些实现中,任务排程器110可以将空闲任务执行限制为一个帧内时间段,并且防止在当前期限内不能完成的任务在相同空闲时间段的剩余时间期间重新发布自身。这可能会阻止任务在空闲时间的剩余时间内重复重新发布其本身,并且不必要地烧毁CPU电源。
在一个或多个实现中,任务排程器110可以基于来自绘图合成器112的输入来确定更长的空闲时间段,其中没有帧已经由绘图合成器112提交。在这种情况下,空闲任务可以不限于在单个空闲时间段204、206期间预定的块持续时间(例如,50ms的空闲任务)。任务排程器110可以被配置为排程整个空闲时间段以执行任何必要的后台工作;只要其中排程的任务在每个预定块持续时间(例如,每个50ms)结束时向排程器返回排程控制,以防止输入事件的阻塞和因此的输入事件的显著延迟。在长空闲时间段204、206(例如,超过预定的持续时间)期间,任务可以被允许重新发布到相同的空闲时间段。只要空闲时间的剩余时间长得足以完成空闲任务持续时间,空闲任务不应该被拒绝;从而防止任务尝试反复重新发布自己的能力。
图3描绘了根据主题技术方面的用于在处理器空闲时间段期间排程软件垃圾收集的第一示例过程300的流程图。为了说明的目的,本文参考图1和图2的组件描述示例过程300。此外,为了说明的目的,示例过程300的块在本文中被描述为以串行或线性方式发生。然而,示例过程300的多个块可以并行地发生。此外,示例过程300的块不需要以所示的顺序执行,和/或不需要执行示例过程300的一个或多个块。
在所描绘的示例流程图中,系统100(例如,任务排程器110)确定在执行一个或多个软件应用期间处理器102将处于空闲状态的未来空闲时间段(例如,空闲时间段204)(302)。如上所述,可以通过第一帧渲染开始时间和第二帧渲染时间确定未来空闲时间段。可以从绘图合成器112确定帧开始时间。例如,绘图合成器112可以根据预定的帧速率利用任务排程器110来排程帧。例如,60fps(每秒帧数)绘图合成器可以将帧开始时间发布为每16.6ms开始。确定的未来空闲时间段可以是不包括应用或运行时环境所需的应用任务(例如,输入任务、合成器任务)的第一帧渲染开始时间和第二帧渲染开始时间之间的时间段。
在用户交互应用(例如,实现布局和光栅化的JavaScript应用)中,大于16.6ms的帧计算时间可被认为具有不期望的高延迟。然而,相同的应用可以包括垃圾收集过程,其在执行时比帧持续时间长,从而在帧绘制中引起不期望的、用户能够感知的暂停。例如,垃圾收集可以包括多个不同的事件,例如清除、标记和压缩标记对象,标记对象当被提交时,需要大量的时间来统一执行。关闭垃圾收集可能会导致存储器不足错误,并以编程方式调用垃圾收集可能会对垃圾收集启发(heuristics)造成负面影响。在许多情况下,应用不应与垃圾收集器进行交互。因此,主题技术将各种垃圾收集事件自动地分离成可以作为空闲任务被发布到任务排程器110并且在系统处于空闲状态时执行的更小、更易于管理的块。因此,垃圾收集仍然相对于应用隐藏,但是减少了帧延迟的可能性。
因此,为了分解垃圾收集事件,系统100首先确定需要多少垃圾收集。在这方面,系统100(例如,存储器管理器114)针对未来空闲时间段估计存储器的对于一个或多个软件应用的分配(304)。存储器管理器114可以估计为每种不同类型的可用垃圾收集事件而对存储器进行垃圾收集可能需要多长时间。例如,存储器管理器114可以估计年轻和/或旧对象(例如,每MB)的垃圾收集、标记年轻和/或旧对象(例如,每MB)和压缩的持续时间。存储器管理器114可以基于各种因素来提供每个事件的估计,各种因素包括堆状态(例如,分段、一致、损坏的百分比),提交、释放和保留的堆的百分比,分配速率,分配负载和垃圾收集标记速度(例如,基于过去的速度)。
存储器管理器114可以例如轮询任务排程器110来确定下一个空闲时间,并且基于分配速率(过去或当前)确定接着的空闲时间将基于上述因素被分配多少存储器。例如,存储器管理器114可以确定已经分配了x MB,并且当前的分配速率是y MB/ms。如果下一个空闲时间为3ms,则估计x+3y MB将在下一个空闲时间内分配。一旦分配被确定,存储器管理器114可以确定每种类型的事件可能需要多少时间。
垃圾收集事件可以分解成预定的事件任务,每个事件任务是包括一系列子任务或命令的事件的块。生成每个任务,使其可以在预定的持续时间内执行。例如,如果诸如标记旧对象的垃圾收集事件被估计为需要400ms,则事件可以被划分为八个50ms(或者某个其它预定的持续时间)的任务。系统100可以基于任何预定的时间量来生成事件的任务。例如,每个任务可以是10ms、25ms、50ms等。
在一些方面,估计的存储器分配可以基于多个未来排程的空闲时间上的存储器分配。例如,存储器管理器114可以确定在空闲时间段204发布到任务排程器110之后返回先前生成的垃圾收集任务212。然后,存储器管理器114可以重新计算随后的空闲时间段206的存储器分配。附加地或替选地,存储器管理器114可以确定垃圾收集事件不能在单个空闲时间段内完成。因此,存储器管理器114可以确定完成事件的空闲时间段的估计数量,并确定对该数量的空闲时间段的存储器分配。
进一步参考图3,系统100(例如,任务排程器110)基于所确定的未来空闲时间段和所估计的存储器分配来选择多个预定软件垃圾收集事件中的一个(306)。在一个或多个实现中,仅当首先确定所估计的存储器分配满足阈值存储器分配(例如在确定的未来空闲时间段)时,才会选择垃圾收集事件。阈值可以基于总分配、分配速率、年轻或旧对象的分配等。在一个或多个实现中,任务排程器110可以分析事件队列中的垃圾收集事件的类型并且排程事件(或事件的任务)以最大化系统的性能。任务排程器110(或者,例如,与任务排程器110的组件相适配的系统垃圾收集器)可以选择可以在单个空闲时间段内或者在队列中的事件的最小数量的空闲时间段(例如,作为一系列任务)内完成的事件。任务排程器110可以在最短持续时间或最少数量的任务块中排程提供最多存储器优化(例如经由垃圾收集)的事件的任务。
在一个或多个实现中,任务排程器110可以基于一个或多个预定规则来选择待排程的垃圾收集事件。例如,当年轻一代几乎满(例如,大于90%的满)时,可以选择年轻一代垃圾收集。可以在旧的一代对象几乎已满(例如,在超过当前时间之前的预定时间时创建的对象大于90%满)时启动对象的增量标记(例如,在预定持续时间内的分块任务中标记的多个对象)。当在较早的空闲时间段开始标记时,可以选择随后的标记步骤。当任务排程器110确定足够的空闲时间可用于在不引起延迟的情况下完成垃圾收集时,可以启动和排程完整垃圾收集。
在一些方面,当所选择的垃圾收集事件是对象标记事件时,事件可以被分段成多个增量对象标记任务,增量对象标记任务中的第一增量对象标记任务被排程为在先前描述的未来空闲时间段期间首先被执行。如前所述,可以将多个增量对象标记任务排程为在两个或更多个不同的空闲时间段之间分割。
因此,可以基于所估计的存储器分配和基于与所选择的软件垃圾收集事件相对应的相应时间估计和未来空闲时间段的持续时间选择的垃圾收集事件来确定用于完成多个预定软件垃圾收集事件中的每一个预定软件垃圾收集事件的时间估计。
进一步参考图3,系统100(例如,任务排程器110)排程所选择的软件垃圾收集事件以在未来空闲时间段期间执行(308)。附加地或替选地,可以在空闲时间段期间排程任务组。例如,任务排程器110可以确定未来空闲时间段与在渲染一个或多个软件应用的帧中的暂停(例如,长的空闲时间)相对应。因此,任务排程器110可以排程软件垃圾收集任务组以在未来空闲时间段期间执行,该组包括所选择的软件垃圾收集事件的至少一部分。在该示例中,组的持续时间大于单个相应帧的持续时间(例如,大于16.6ms)。
然后,系统100在未来空闲时间段期间执行所选择的软件垃圾收集事件(310)。如前所述,事件可以被执行为一系列任务(例如,每个预定持续时间)。在某些情况下,事件可能只能是一个任务或在同一空闲时间段内执行的几个任务。然而,未来空闲时间段可以是连续的,或者可以跨越几个帧(例如,在系统任务和每个帧的结尾之间)。
上述示例过程200、300和400以及相关特征和应用中的许多可以被实现为被指定为记录在计算机可读存储介质(也称为计算机可读介质)上的指令集的软件过程。当这些指令由一个或多个处理单元(例如,一个或多个处理器、处理器的核或其他处理单元)执行时,它们使处理单元执行指令中指示的动作。计算机可读介质的示例包括但不限于CD-ROM、闪存驱动器、RAM芯片、硬盘驱动器、EPROM等。计算机可读介质不包括通过无线或有线连接的载波和电子信号。
术语“软件”意在在适当时包括驻留在只读存储器中的固件或存储在磁存储器中的应用,其可被读入存储器中以供处理器处理。此外,在一些实现中,主题公开的多个软件方面可以被实现为较大程序的子部分,同时保留主题公开的不同软件方面。在一些实现中,多个软件方面也可以被实现为单独的程序。最后,一起实现这里描述的软件方面的单独程序的任何组合都在主题公开的范围内。在一些实现中,软件程序在被安装为在一个或多个电子系统上操作时,定义执行和进行软件程序的操作的一个或多个特定的机器实现。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言、声明性或程序语言,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适用于计算环境的其他单元。计算机程序可以但不必对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、保存在专用于所讨论的程序的单个文件中、或在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)。可以将计算机程序部署为在一个计算机上或位于一个站点上或者分布在多个站点上并由通信网络互连的多个计算机上执行。
图4是示出根据本主题技术的一个或多个方面的用于在处理器空闲期间排程软件垃圾收集的示例电子系统400的示图。电子系统400可以是用于执行与计算设备100的操作相关联的软件或者过程300的一个或多个部分或步骤或由图1-3提供的组件和过程的计算设备。在各种实现中,电子系统400可以代表系统100。在这点上,电子系统400或系统100可以是个人计算机或移动设备,诸如平板计算机、膝上型计算机、智能电话、PDA或具有嵌入其中或与其耦合的一个或多个处理器的其他触摸屏或者电视机,或具有无线连接性的任何其他类型的计算机相关电子设备。
电子系统400可以包括各种类型的计算机可读介质和用于各种其他类型的计算机可读介质的接口。在所描绘的示例中,电子系统400包括总线408、处理单元412、系统存储器404、只读存储器(ROM)410、永久存储设备402、输入设备接口414、输出设备接口406和一个或多个网络接口416。在一些实现中,电子系统400可以包括其他计算设备或电路或者与其他计算设备或电路集成以用于先前描述的各种组件和过程的操作。
总线408共同地表示通信地连接电子系统400的众多内部设备的所有系统、外围设备和芯片集总线。例如,总线408将处理单元412与ROM 410、系统存储器404和永久存储设备402通信地连接。
从这些各种存储器单元,处理单元412检索要执行的指令和要处理的数据,以便执行主题公开的过程。处理单元可以在不同实现中是单个处理器或多核处理器。
ROM 410存储处理单元412和电子系统的其他模块所需的静态数据和指令。另一方面,永久存储设备402是读写存储器设备。该设备是即使在电子系统400关闭时也存储指令和数据的非易失性存储器单元。本主题公开的一些实现使用大容量存储设备(诸如磁盘或光盘及其对应的磁盘驱动器)作为永久存储设备402。
其他实现使用可移动存储设备(诸如软盘、闪存驱动器及其对应的磁盘驱动器)作为永久存储设备402。与永久存储设备402一样,系统存储器404是读写存储器设备。然而,与存储设备402不同,系统存储器404是易失性读写存储器,诸如随机存取存储器。系统存储器404存储处理器在运行时需要的指令和数据。在一些实现中,本主题公开的过程存储在系统存储器404、永久存储设备402和/或ROM 410中。从这些各种存储器单元,处理单元412检索要执行的指令和要处理的数据以便执行一些实现的过程。
总线408还连接到输入和输出设备接口414和406。输入设备接口414使用户能够向电子系统通信信息和选择命令。与输入设备接口414一起使用的输入设备包括例如字母数字键盘和指针设备(也称为“光标控制设备”)。输出设备接口406例如能够显示由电子系统400生成的图像。与输出设备接口406一起使用的输出设备包括例如打印机和显示设备,诸如阴极射线管(CRT)或液晶显示器(LCD)。一些实现包括诸如作为输入和输出设备的触摸屏的设备。
最后,如图4所示,总线408还通过网络接口416将电子系统400耦合到网络(未示出)。网络接口416可以包括例如无线接入点(例如,蓝牙或WiFi)或用于连接到无线接入点的无线电电路。网络接口416还可以包括用于将计算机连接到诸如局域网(“LAN”)、广域网(“WAN”)、无线LAN或内联网,或诸如互联网的网络的网络的计算机网络的一部分的硬件(例如,以太网硬件)。可以结合本主题公开使用电子系统400的任何或所有组件。
上述这些功能可以在计算机软件、固件或硬件中实现。这些技术可以使用一个或多个计算机程序产品来实现。可编程处理器和计算机可以包含在移动设备中或被封装为移动设备。过程和逻辑流程可以由一个或多个可编程处理器和一个或多个可编程逻辑电路执行。通用和专用计算设备和存储设备可以通过通信网络互连。
一些实现方式包括电子组件,诸如微处理器、存储和存储器,其在机器可读或计算机可读介质(或称为计算机可读存储介质、机器可读介质或机器可读存储介质)中存储计算机程序指令。这种计算机可读介质的一些示例包括RAM、ROM、只读光盘(CD-ROM)、可记录光盘(CD-R)、可重写光盘(CD-RW)、只读数字通用光盘(例如,DVD-ROM、双层DVD-ROM)、各种可记录/可重写DVD(例如,DVD-RAM、DVD-RW、DVD+RW等)、闪存(例如,SD卡、迷你SD卡、微型SD卡等)、磁性和/或固态硬盘驱动器、只读和可录制的盘、超密度光盘、任何其他光学或磁性介质和软盘。计算机可读介质可以存储可由至少一个处理单元执行的计算机程序,并且包括用于执行各种操作的指令集。计算机程序或计算机代码的示例包括诸如由编译器产生的机器代码以及包括由计算机、电子组件或使用解释器的微处理器执行的较高级代码的文件。
尽管上述讨论主要涉及执行软件的微处理器或多核处理器,但是一些实现由一个或多个集成电路(例如专用集成电路(ASIC)或现场可编程门阵列(FPGA))来执行。在一些实现中,这种集成电路执行存储在电路本身上的指令。
如本说明书和本申请的任何权利要求书所使用的,术语“计算机”、“服务器”、“处理器”和“存储器”均指电子或其他技术设备。这些术语不包括人或人群。为了说明书的目的,术语显示(display or displaying)表示在电子设备上显示。如本说明书和本申请的任何权利要求书所使用的,术语“计算机可读介质”和“计算机可读介质”完全限于存储以计算机可读的形式的信息的有形物理对象。这些术语排除任何无线信号、有线下载信号和任何其他短暂信号。
为了提供与用户的交互,本说明书中描述的主题的实现可以在计算机上实现,该计算机具有:用于向用户显示信息的显示设备(例如,CRT(阴极射线管)或LCD(液晶显示器)监视器);以及用户可以用以向计算机提供输入的键盘和诸如鼠标或轨迹球的指针设备。其他类型的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档并从其接收文档来与用户进行交互;例如,通过响应于从web浏览器接收的请求,将网页发送到用户的客户端设备上的web浏览器。
本说明书中描述的主题的实施例可以在包括后端组件(例如,作为数据服务器)或包括中间件组件(例如,应用服务器)或包括前端组件(例如具有图形用户界面或web浏览器的客户端计算机,用户可以通过该图形用户界面或web浏览器与本说明书中描述的主题的实现进行交互)或者一个或多个这样的后端、中间件或前端组件的任何组合的计算系统中实现。系统的组件可以通过数字数据通信的任何形式或介质(例如通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、网络间(例如互联网)和对等网络(例如,对等点对点网络)。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,通常通过通信网络进行交互。客户端和服务器之间的关系是通过在相应的计算机上运行并且彼此之间具有客户端-服务器关系的计算机程序而产生的。在一些实施例中,服务器将数据(例如,HTML页面)传送到客户端设备(例如,为了向与客户端设备交互的用户显示数据并从该用户接收用户输入的目的)。可以在服务器处从客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)。
本领域技术人员将理解,本文描述的各种说明性块、模块、元件、组件、方法和算法可以实现为电子硬件、计算机软件或两者的组合。为了说明硬件和软件的这种可互换性,上面已经在其功能方面一般地描述了各种说明性的块、模块、元件、组件、方法和算法。这种功能是否被实现为硬件或软件取决于特定应用和施加在整个系统上的设计约束。技术人员可以针对每个特定应用以各种方式实现所描述的功能。各种组件和块可以在都不脱离本主题技术的范围的情况下以不同的方式进行布置(例如,以不同的顺序排列或以不同的方式分区)。
应当理解,所公开的过程中的步骤的具体顺序或层次是示例方法的说明。基于设计偏好,可以理解,可以重新排列过程中的步骤的具体顺序或层次。一些步骤可以同时执行。随附的方法权利要求以样本顺序呈现各个步骤的元素,并不意味着限于所呈现的特定顺序或层次。
提供前面的描述以使本领域任何人员能够实践本文描述的各个方面。前面的描述提供了本主题技术的各种示例,并且主题技术不限于这些示例。对于这些方面的各种修改对于本领域技术人员将是显而易见的,并且本文定义的一般原理可以应用于其他方面。因此,权利要求不旨在限于本文所示的方面,而是被赋予与语言权利要求一致的全部范围,其中对单数形式的元素的引用并不意味着“一个并且仅一个”(除非具体如此陈述),而是“一个或多个”。除非另有特别说明,术语“一些”是指一个或多个。男性代词(例如他的)包括女性和中性的性别(例如她的和它的),反之亦然。标题和副标题(如果有的话)仅为了方便而使用,并且不限制本发明。
如本文所使用的术语网站可以包括网站(包括一个或多个网页)的任何方面和用于托管或存储web相关内容的一个或多个服务器等。因此,术语网站可以与术语网页和服务器互换使用。“配置为”、“可操作来”和“被编程来”的谓语单词不意味着对主题的任何特定的有形或无形的修改,而是意图可互换使用。例如,被配置为监视和控制操作或组件的处理器也可以意味着处理器被编程以监视和控制操作或处理器可操作来监视和控制操作。同样地,被配置为执行代码的处理器可以被解释为被编程来执行代码或可操作来执行代码的处理器。
诸如“方面”之类的短语并不意味着这样的方面对主题技术是必需的,或者这种方面适用于主题技术的所有配置。涉及一个方面的公开可以应用于所有配置或一个或多个配置。一个方面可以提供一个或多个示例。诸如方面的短语可以指一个或多个方面,反之亦然。诸如“实施例”的短语并不暗示这样的实施例对于主题技术是必不可少的,或者这种实施例适用于主题技术的所有配置。与实施例相关的公开内容可以应用于所有实施例或一个或多个实施例。实施例可以提供一个或多个示例。诸如“实施例”的短语可以指代一个或多个实施例,反之亦然。诸如“配置”之类的短语并不暗示这种配置对于主题技术是至关重要的,或者这种配置适用于主题技术的所有配置。关于配置的公开可以应用于所有配置或一个或多个配置。配置可以提供一个或多个示例。诸如“配置”的短语可以指代一个或多个配置,反之亦然。
词语“示例”在本文中用于表示“用作示例或说明”。本文中描述为“示例”的任何方面或设计不一定被解释为比其他方面或设计优选或有利。
本领域普通技术人员已知或将来已知的贯穿本公开描述的各个方面的元素的所有结构和功能等同物通过引用明确地并入本文,并且旨在被权利要求涵盖。此外,无论这些公开是否在权利要求中被明确地陈述,本文中公开的任何内容都不会被奉献给公众。不根据35 U.S.C.§112第六段的规定解释任何权利要求元素,除非使用短语“用于…的装置”明确叙述了该元素,或者在方法权利要求的情况下,使用短语“用于…的步骤”来叙述该元素。而且,如果在说明书或权利要求书中使用术语“包括”或“具有”等等的情况下,这样的术语旨在以类似于术语“包括”的方式是包括性的,就像“包括”被用作权利要求中的过渡词时被解释的那样。
权利要求书(按照条约第19条的修改)
1.一种计算机实现的方法,包括:
确定未来空闲时间段,在所述未来空闲时间段期间,在执行一个或多个软件应用期间一个或多个处理器将处于空闲状态;
对于所述未来空闲时间段,估计对所述一个或多个软件应用的未来存储器分配;
基于所确定的未来空闲时间段和所估计的未来存储器分配,选择多个预定软件垃圾收集事件中的一个;
排程所选择的软件垃圾收集事件以在所述未来空闲时间段期间执行;以及
在所述未来空闲时间段期间执行所选择的软件垃圾收集事件。
2.根据权利要求1所述的计算机实现的方法,其中所述选择包括:
基于所估计的存储器分配,确定用于完成所述多个预定软件垃圾收集事件中的每一个的时间估计;以及
基于与所选择的软件垃圾收集事件相对应的相应时间估计和所述未来空闲时间段的持续时间来选择所选择的软件垃圾收集事件。
3.根据权利要求1所述的计算机实现的方法,进一步包括:
基于帧速率和一个或多个软件应用任务,确定第一帧渲染开始时间和第二帧渲染时间,
其中所述未来空闲时间段在所述第一帧渲染开始时间和所述第二帧渲染开始时间之间。
4.根据权利要求1所述的计算机实现的方法,其中所选择的垃圾收集事件包括垃圾收集任务组,所述方法进一步包括:
确定所述未来空闲时间段与所述一个或多个软件应用的渲染帧的暂停相对应;以及
排程所述软件垃圾收集任务的所述组以在所述未来空闲时间段期间执行,所述组的持续时间大于相应帧的持续时间。
5.根据权利要求1所述的计算机实现的方法,进一步包括:
确定所估计的存储器分配将在所述未来空闲时间段满足阈值存储器分配。
6.根据权利要求5所述的计算机实现的方法,
其中估计所述存储器分配包括:确定存储器分配的当前速率,以及
其中确定所估计的存储器分配将满足阈值存储器分配是基于存储器分配的所述当前速率。
7.根据权利要求1所述的计算机实现的方法,其中所估计的存储器分配基于在多个未来排程的空闲时间上的存储器分配。
8.根据权利要求1所述的计算机实现的方法,其中存储器的估计分配是基于在多个未来排程的空闲时间上的存储器分配。
9.根据权利要求1所述的计算机实现的方法,其中存储器的估计分配是基于在多个未来排程的空闲时间上的存储器分配。
10.根据权利要求1所述的计算机实现的方法,其中存储器的估计分配是基于在多个未来排程的空闲时间上的存储器分配。
11.一种系统,包括:
一个或多个处理器;以及
存储器,包括当由所述一个或多个处理器执行时使所述一个或多个处理器促进以下步骤的指令:
确定未来空闲时间段,在所述未来空闲时间段期间,在执行一个或多个软件应用期间所述一个或多个处理器将处于空闲状态;
估计对于未来空闲时间段,为所述一个或多个软件应用的未来存储器分配;
基于所确定的未来空闲时间段和所述估计的未来存储器分配,选择多个预定软件垃圾收集事件中的一个;
排程所选软件垃圾收集事件以在未来空闲时间段期间执行;以及
在未来空闲时间段期间执行所选择的软件垃圾收集事件。
12.根据权利要求11所述的系统,其中所述指令在被执行时进一步使所述一个或多个处理器促进以下步骤:
基于所估计的存储器分配,确定用于完成所述多个预定软件垃圾收集事件中的每一个的时间估计;以及
基于与所选择的软件垃圾收集事件相对应的相应时间估计和所述未来空闲时间段的持续时间来选择所选择的软件垃圾收集事件。
13.根据权利要求11所述的系统,其中,所述指令在被执行时进一步导致所述一个或多个处理器促进以下步骤:
基于帧速率和一个或多个软件应用任务,确定第一帧渲染开始时间和第二帧渲染开始时间,
其中所述未来空闲时间段在所述第一帧渲染开始时间和所述第二帧渲染开始时间之间。
14.根据权利要求11所述的系统,其中所选择的垃圾收集事件包括垃圾收集任务组,并且其中所述指令在被执行时进一步导致所述一个或多个处理器促进以下步骤:
确定所述未来空闲时间段与所述一个或多个软件应用的渲染帧的暂停相对应;以及
排程所述软件垃圾收集任务的所述组以在所述未来空闲时间段期间执行,所述组的持续时间大于相应帧的持续时间。
15.根据权利要求11所述的系统,其中,所述指令在被执行时进一步使所述一个或多个处理器促进以下步骤:
确定所估计的存储器分配将在所述未来空闲时间段满足阈值存储器分配,
其中估计所述存储器分配包括:确定存储器分配的当前速率,以及
其中确定所估计的存储器分配将满足阈值存储器分配是基于存储器分配的所述当前速率。
16.根据权利要求11所述的系统,其中所估计的存储器分配基于在多个未来排程的空闲时间上的存储器分配。
17.根据权利要求11所述的系统,其中所述多个预定软件垃圾收集事件包括对象标记、完结和存储器扫描。
18.根据权利要求17所述的系统,其中所选择的垃圾收集事件是对象标记事件,并且其中所述指令在被执行时进一步导致所述一个或多个处理器促进以下步骤:
将所述对象标记事件分段成多个增量对象标记任务,所述增量对象标记任务中的第一增量对象标记任务被排程为在所述未来空闲时间段期间首先被执行。
19.根据权利要求18所述的系统,其中所述多个增量对象标记任务被排程为在两个或更多个不同的空闲时间段之间分割。
20.一种非暂时性计算机可读存储介质,包括指令,当被执行时,便于以下步骤:
确定未来空闲时间段,在所述未来空闲时间段期间,在执行一个或多个软件应用期间一个或多个处理器将处于空闲状态;
对于所述未来空闲时间段,估计对所述一个或多个软件应用的未来存储器分配;
基于所确定的未来空闲时间段和所估计的未来存储器分配,选择多个预定软件垃圾收集任务中的一个;
排程所选软件垃圾收集事件以在未来空闲时间段期间执行;以及
在未来空闲时间段期间执行所选择的软件垃圾收集事件。
Claims (20)
1.一种计算机实现的方法,包括:
确定未来空闲时间段,在所述未来空闲时间段期间,在执行一个或多个软件应用期间一个或多个处理器将处于空闲状态;
对于所述未来空闲时间段,估计对所述一个或多个软件应用的存储器分配;
基于所确定的未来空闲时间段和所估计的存储器分配,选择多个预定软件垃圾收集事件中的一个;
排程所选择的软件垃圾收集事件以在所述未来空闲时间段期间执行;以及
在所述未来空闲时间段期间执行所选择的软件垃圾收集事件。
2.根据权利要求1所述的计算机实现的方法,其中所述选择包括:
基于所估计的存储器分配,确定用于完成所述多个预定软件垃圾收集事件中的每一个的时间估计;以及
基于与所选择的软件垃圾收集事件相对应的相应时间估计和所述未来空闲时间段的持续时间来选择所选择的软件垃圾收集事件。
3.根据权利要求1所述的计算机实现的方法,进一步包括:
基于帧速率和一个或多个软件应用任务,确定第一帧渲染开始时间和第二帧渲染时间,
其中所述未来空闲时间段在所述第一帧渲染开始时间和所述第二帧渲染开始时间之间。
4.根据权利要求1所述的计算机实现的方法,其中所选择的垃圾收集事件包括垃圾收集任务组,所述方法进一步包括:
确定所述未来空闲时间段与所述一个或多个软件应用的渲染帧的暂停相对应;以及
排程所述软件垃圾收集任务的所述组以在所述未来空闲时间段期间执行,所述组的持续时间大于相应帧的持续时间。
5.根据权利要求1所述的计算机实现的方法,进一步包括:
确定所估计的存储器分配将在所述未来空闲时间段满足阈值存储器分配。
6.根据权利要求5所述的计算机实现的方法,
其中估计所述存储器分配包括:确定存储器分配的当前速率,以及
其中确定所估计的存储器分配将满足阈值存储器分配是基于存储器分配的所述当前速率。
7.根据权利要求1所述的计算机实现的方法,其中所估计的存储器分配基于在多个未来排程的空闲时间上的存储器分配。
8.根据权利要求1所述的计算机实现的方法,其中所述多个预定软件垃圾收集事件包括对象标记、完结和存储器扫描。
9.根据权利要求8所述的计算机实现的方法,其中所选择的垃圾收集事件是对象标记事件,所述方法进一步包括:
将所述对象标记事件分段成多个增量对象标记任务,所述增量对象标记任务中的第一增量对象标记任务被排程为在所述未来空闲时间段期间首先被执行。
10.根据权利要求9所述的计算机实现的方法,其中所述多个增量对象标记任务被排程为在两个或更多个不同的空闲时间段之间分割。
11.一种系统,包括:
一个或多个处理器;以及
包括指令的存储器,所述指令当由所述一个或多个处理器执行时使所述一个或多个处理器促进以下步骤:
确定未来空闲时间段,在所述未来空闲时间段期间,在执行一个或多个软件应用期间所述一个或多个处理器将处于空闲状态;
对于所述未来空闲时间段,估计对所述一个或多个软件应用的存储器分配;
基于所确定的未来空闲时间段和所估计的存储器分配,选择多个预定软件垃圾收集事件中的一个;
排程所选择的软件垃圾收集事件以在所述未来空闲时间段期间执行;以及
在所述未来空闲时间段期间执行所选择的软件垃圾收集事件。
12.根据权利要求11所述的系统,其中所述指令在被执行时进一步使所述一个或多个处理器促进以下步骤:
基于所估计的存储器分配,确定用于完成所述多个预定软件垃圾收集事件中的每一个的时间估计;以及
基于与所选择的软件垃圾收集事件相对应的相应时间估计和所述未来空闲时间段的持续时间来选择所选择的软件垃圾收集事件。
13.根据权利要求11所述的系统,其中,所述指令在被执行时进一步导致所述一个或多个处理器促进以下步骤:
基于帧速率和一个或多个软件应用任务,确定第一帧渲染开始时间和第二帧渲染开始时间,
其中所述未来空闲时间段在所述第一帧渲染开始时间和所述第二帧渲染开始时间之间。
14.根据权利要求11所述的系统,其中所选择的垃圾收集事件包括垃圾收集任务组,并且其中所述指令在被执行时进一步导致所述一个或多个处理器促进以下步骤:
确定所述未来空闲时间段与所述一个或多个软件应用的渲染帧的暂停相对应;以及
排程所述软件垃圾收集任务的所述组以在所述未来空闲时间段期间执行,所述组的持续时间大于相应帧的持续时间。
15.根据权利要求11所述的系统,其中,所述指令在被执行时进一步使所述一个或多个处理器促进以下步骤:
确定所估计的存储器分配将在所述未来空闲时间段满足阈值存储器分配,
其中估计所述存储器分配包括:确定存储器分配的当前速率,以及
其中确定所估计的存储器分配将满足阈值存储器分配是基于存储器分配的所述当前速率。
16.根据权利要求11所述的系统,其中所估计的存储器分配基于在多个未来排程的空闲时间上的存储器分配。
17.根据权利要求11所述的系统,其中所述多个预定软件垃圾收集事件包括对象标记、完结和存储器扫描。
18.根据权利要求17所述的系统,其中所选择的垃圾收集事件是对象标记事件,并且其中所述指令在被执行时进一步导致所述一个或多个处理器促进以下步骤:
将所述对象标记事件分段成多个增量对象标记任务,所述增量对象标记任务中的第一增量对象标记任务被排程为在所述未来空闲时间段期间首先被执行。
19.根据权利要求18所述的系统,其中所述多个增量对象标记任务被排程为在两个或更多个不同的空闲时间段之间分割。
20.一种包括指令的非暂时性计算机可读存储介质,所述指令当被执行时,促进以下步骤:
确定未来空闲时间段,在所述未来空闲时间段期间,在执行一个或多个软件应用期间一个或多个处理器将处于空闲状态;
对于所述未来空闲时间段,估计对所述一个或多个软件应用的存储器分配;
基于所确定的未来空闲时间段和所估计的存储器分配,选择多个预定软件垃圾收集任务中的一个;
排程所选择的软件垃圾收集任务以在所述未来空闲时间段期间执行;以及
在所述未来空闲时间段期间执行所选择的软件垃圾收集事件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/726,383 US20160350214A1 (en) | 2015-05-29 | 2015-05-29 | Idle time software garbage collection |
US14/726,383 | 2015-05-29 | ||
PCT/US2016/028677 WO2016195840A1 (en) | 2015-05-29 | 2016-04-21 | Idle time software garbage collection |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107430492A true CN107430492A (zh) | 2017-12-01 |
Family
ID=55861267
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680018489.2A Pending CN107430492A (zh) | 2015-05-29 | 2016-04-21 | 空闲时间软件垃圾收集 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20160350214A1 (zh) |
EP (1) | EP3304300A1 (zh) |
JP (1) | JP6553203B2 (zh) |
KR (1) | KR102161817B1 (zh) |
CN (1) | CN107430492A (zh) |
DE (1) | DE112016002420T5 (zh) |
GB (1) | GB2553049A (zh) |
WO (1) | WO2016195840A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958943A (zh) * | 2018-07-25 | 2018-12-07 | 北京小米移动软件有限公司 | 内存释放方法及装置 |
CN112313631A (zh) * | 2018-06-14 | 2021-02-02 | 微软技术许可有限责任公司 | 闭环垃圾收集器 |
CN112406748A (zh) * | 2020-11-19 | 2021-02-26 | 广州瑞修得信息科技有限公司 | 一种车辆数据采集方法、装置及车辆诊断系统 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105278876B (zh) * | 2015-09-23 | 2018-12-14 | 华为技术有限公司 | 一种固态硬盘的数据擦除方法及装置 |
KR102467032B1 (ko) | 2015-10-08 | 2022-11-14 | 삼성전자주식회사 | 메모리 스케줄링 방법 및 메모리 시스템의 동작방법 |
US10140150B2 (en) * | 2016-02-08 | 2018-11-27 | Microsoft Technology Licensing, Llc | Thread diversion awaiting log call return |
US10417125B2 (en) | 2016-02-11 | 2019-09-17 | Oracle International Corporation | Feedback-based selection of regions for abortable garbage collection |
US10534655B1 (en) * | 2016-06-21 | 2020-01-14 | Amazon Technologies, Inc. | Job scheduling based on job execution history |
US10819599B2 (en) * | 2016-10-10 | 2020-10-27 | International Business Machines Corporation | Energy consumption as a measure of utilization and work characterization in a system |
US11169592B2 (en) | 2016-10-10 | 2021-11-09 | International Business Machines Corporation | SLA-based backup power management during utility power interruption in disaggregated datacenters |
US10360077B2 (en) | 2016-10-10 | 2019-07-23 | International Business Machines Corporation | Measuring utilization of resources in datacenters |
US10838482B2 (en) | 2016-10-10 | 2020-11-17 | International Business Machines Corporation | SLA-based power management in disaggregated computing systems |
CN108614663B (zh) * | 2016-12-09 | 2021-05-04 | 北京兆易创新科技股份有限公司 | 基于NAND flash的数据处理方法和装置 |
US11269764B2 (en) * | 2017-03-21 | 2022-03-08 | Western Digital Technologies, Inc. | Storage system and method for adaptive scheduling of background operations |
US10635335B2 (en) | 2017-03-21 | 2020-04-28 | Western Digital Technologies, Inc. | Storage system and method for efficient pipeline gap utilization for background operations |
US11188456B2 (en) | 2017-03-21 | 2021-11-30 | Western Digital Technologies Inc. | Storage system and method for predictive block allocation for efficient garbage collection |
US11537513B2 (en) * | 2017-12-11 | 2022-12-27 | SK Hynix Inc. | Apparatus and method for operating garbage collection using host idle |
US10489085B2 (en) * | 2018-02-28 | 2019-11-26 | Micron Technology, Inc. | Latency-based scheduling of command processing in data storage devices |
CN111078389B (zh) * | 2018-10-18 | 2023-09-05 | 杭州海康威视数字技术股份有限公司 | 一种垃圾数据清理方法、装置、电子设备及可读存储介质 |
US10817046B2 (en) | 2018-12-31 | 2020-10-27 | Bmc Software, Inc. | Power saving through automated power scheduling of virtual machines |
US10877882B1 (en) * | 2019-06-19 | 2020-12-29 | Micron Technology, Inc. | Garbage collection adapted to user device access |
US11526434B1 (en) * | 2019-06-25 | 2022-12-13 | Amazon Technologies, Inc. | Network-level garbage collection in an on-demand code execution system |
US11550711B2 (en) * | 2019-09-09 | 2023-01-10 | Micron Technology, Inc. | Dynamically adjusted garbage collection workload |
US11748260B1 (en) * | 2019-09-23 | 2023-09-05 | Amazon Technologies, Inc. | Service performance enhancement using advance notifications of reduced-capacity phases of operations |
CN111078588B (zh) * | 2019-12-17 | 2022-03-25 | 北京三快在线科技有限公司 | 垃圾回收方法、装置、设备及存储介质 |
US11314416B1 (en) * | 2020-10-23 | 2022-04-26 | EMC IP Holding Company LLC | Defragmentation of striped volume in data storage system |
CN116974455A (zh) * | 2022-04-21 | 2023-10-31 | 戴尔产品有限公司 | 用于删除备份数据的方法、电子设备和计算机程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090158288A1 (en) * | 2007-12-13 | 2009-06-18 | Mike Stephen Fulton | Method and apparatus for managing system resources |
US8364918B1 (en) * | 2007-04-06 | 2013-01-29 | Marvell International Ltd. | Sensed opportunistic garbage collection in memory components |
US8583783B1 (en) * | 2009-08-18 | 2013-11-12 | Sprint Communications Company L.P. | Method and system for adaptive recovery of heap memory |
US20140047169A1 (en) * | 2012-08-08 | 2014-02-13 | Research & Business Foundation Sungkyunkwan University | Method for operating a memory controller and a system having the memory controller |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000339214A (ja) * | 1999-05-28 | 2000-12-08 | Nec Corp | 実時間メモリ管理システム、及び実時間メモリ管理方法 |
US7962707B2 (en) * | 2005-07-06 | 2011-06-14 | Honeywell International Inc. | Apparatus and method for deterministic garbage collection of a heap memory |
US7996642B1 (en) * | 2007-04-25 | 2011-08-09 | Marvell International Ltd. | Digital locked loop on channel tagged memory requests for memory optimization |
US8261269B2 (en) * | 2009-09-21 | 2012-09-04 | Oracle International Corporation | System and method for synchronizing transient resource usage between virtual machines in a hypervisor environment |
-
2015
- 2015-05-29 US US14/726,383 patent/US20160350214A1/en not_active Abandoned
-
2016
- 2016-04-21 WO PCT/US2016/028677 patent/WO2016195840A1/en active Application Filing
- 2016-04-21 EP EP16719703.7A patent/EP3304300A1/en not_active Withdrawn
- 2016-04-21 GB GB1715232.3A patent/GB2553049A/en not_active Withdrawn
- 2016-04-21 KR KR1020177023944A patent/KR102161817B1/ko active IP Right Grant
- 2016-04-21 DE DE112016002420.7T patent/DE112016002420T5/de active Pending
- 2016-04-21 JP JP2017551175A patent/JP6553203B2/ja active Active
- 2016-04-21 CN CN201680018489.2A patent/CN107430492A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8364918B1 (en) * | 2007-04-06 | 2013-01-29 | Marvell International Ltd. | Sensed opportunistic garbage collection in memory components |
US20090158288A1 (en) * | 2007-12-13 | 2009-06-18 | Mike Stephen Fulton | Method and apparatus for managing system resources |
US8583783B1 (en) * | 2009-08-18 | 2013-11-12 | Sprint Communications Company L.P. | Method and system for adaptive recovery of heap memory |
US20140047169A1 (en) * | 2012-08-08 | 2014-02-13 | Research & Business Foundation Sungkyunkwan University | Method for operating a memory controller and a system having the memory controller |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112313631A (zh) * | 2018-06-14 | 2021-02-02 | 微软技术许可有限责任公司 | 闭环垃圾收集器 |
CN108958943A (zh) * | 2018-07-25 | 2018-12-07 | 北京小米移动软件有限公司 | 内存释放方法及装置 |
CN108958943B (zh) * | 2018-07-25 | 2021-02-09 | 北京小米移动软件有限公司 | 内存释放方法及装置 |
CN112406748A (zh) * | 2020-11-19 | 2021-02-26 | 广州瑞修得信息科技有限公司 | 一种车辆数据采集方法、装置及车辆诊断系统 |
CN112406748B (zh) * | 2020-11-19 | 2023-08-01 | 广州瑞修得信息科技有限公司 | 一种车辆数据采集方法、装置及车辆诊断系统 |
Also Published As
Publication number | Publication date |
---|---|
JP2018510432A (ja) | 2018-04-12 |
GB201715232D0 (en) | 2017-11-08 |
WO2016195840A1 (en) | 2016-12-08 |
KR20170109607A (ko) | 2017-09-29 |
US20160350214A1 (en) | 2016-12-01 |
DE112016002420T5 (de) | 2018-03-08 |
EP3304300A1 (en) | 2018-04-11 |
JP6553203B2 (ja) | 2019-07-31 |
KR102161817B1 (ko) | 2020-10-05 |
GB2553049A (en) | 2018-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107430492A (zh) | 空闲时间软件垃圾收集 | |
US10775971B2 (en) | Pinch gestures in a tile-based user interface | |
CN103582863B (zh) | 多应用环境 | |
US20190188012A1 (en) | Method, device, terminal and storage medium for processing application | |
US20150379160A1 (en) | Apparatus and methods for transferring focus control and related return content within a graphical user interface | |
US9811350B2 (en) | Embedding non-blocking help components in a display page using discovery drawer feature cues | |
US8725522B2 (en) | Automatic identification of user-aligned fragments in business process models | |
US10007555B1 (en) | Dynamic resource management | |
CN109343902A (zh) | 音频处理组件的运行方法、装置、终端及存储介质 | |
KR101773781B1 (ko) | 웹 기반의 사용자 지향적 데이터 시각화 방법 및 장치 | |
CN106716357A (zh) | 多系统移动终端的控制方法、控制装置及电子设备 | |
US10484313B1 (en) | Decision tree navigation through text messages | |
CN107463434A (zh) | 一种分布式任务处理方法与设备 | |
CN107807847A (zh) | 应用进程的管理方法和终端设备 | |
US10769574B2 (en) | Maximize human resources efficiency by reducing distractions during high productivity periods | |
US9513873B2 (en) | Computer-assisted release planning | |
US20110040549A1 (en) | Discrete event simulation tool combining process-driven and event-driven models | |
US8818783B2 (en) | Representing state transitions | |
US10521275B2 (en) | Asynchronous dispatcher for application framework | |
US20160378544A1 (en) | Intellective switching between tasks | |
CN104011682B (zh) | 对应用事件响应进行推测性处理的方法和计算机系统 | |
US20180061258A1 (en) | Data driven feature discovery | |
CN108256647A (zh) | 规则执行请求处理方法、装置、存储介质和电子设备 | |
CN114610190A (zh) | 界面编辑方法、装置、电子设备和可读介质 | |
CN109814857B (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 |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
CB02 | Change of applicant information | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171201 |
|
RJ01 | Rejection of invention patent application after publication |