CN101595460A - 用于收集非托管存储空间的实现 - Google Patents
用于收集非托管存储空间的实现 Download PDFInfo
- Publication number
- CN101595460A CN101595460A CNA2006800162495A CN200680016249A CN101595460A CN 101595460 A CN101595460 A CN 101595460A CN A2006800162495 A CNA2006800162495 A CN A2006800162495A CN 200680016249 A CN200680016249 A CN 200680016249A CN 101595460 A CN101595460 A CN 101595460A
- Authority
- CN
- China
- Prior art keywords
- time
- storage space
- storage
- memory
- garbage collector
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
- G06F12/0276—Generational garbage collection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File allocation
- Y10S707/99957—Garbage collection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种用于垃圾收集不再被引用的托管与非托管存储空间的方法与系统。将分配之间的时间与一阈值相比较以确定垃圾收集器是否需要收集不使用的存储空间。由不使用的托管存储器中的对象所引用的非托管存储空间可以在收集期间被释放。
Description
发明领域
本发明一般地涉及计算机,尤其涉及存储空间管理。
背景
许多现代程序是在其中存储空间由被称为垃圾收集器(garbage collector)的存储空间管理程序来管理的环境中执行的。响应对存储空间的请求,垃圾收集器找出足够量的空闲存储空间并且将其分配给该程序。该程序随后就可使用此存储空间直到它不再需要此存储空间为止。该程序可以不显式通知垃圾收集器它完成了对此存储空间的使用。相反地,该垃圾收集器周期地执行垃圾收集。
垃圾收集器负责确定哪一个存储块不再由该程序使用。垃圾收集器可以通过遍历与程序相关联的对象并且标记它们正使用的存储块来完成以上任务。如果分配的存储单元不再被该程序的对象引用,该垃圾收集器就可指示可以将分配的存储单元返回给存储单元的空闲池。
垃圾收集器可以按周期性的时间表收集。如果一对象在一周期末期仍被引用,该垃圾收集器就可确定该对象是长期生存并且将其置于较不频繁检验以确定它们是否仍被程序引用的一对象集合。如果此集合中的对象当垃圾收集器检查此集合时仍被引用的,则该对象可以移到更不频繁检验的另一对象集合。这被称为分代垃圾收集(generational garbage collection),并且这些集合的每一集合被称为一代。检查一代中对象与另一代相比之间的次数差异可能是100∶1或者更高。垃圾收集器使用各种探究法来决定何时收集各代。
遗憾的是,在任一代中的对象被置于一代之后立即或者很快就被停止引用,并且继续占用该存储空间直到用于它们那一代的垃圾收集发生。如果在不频繁收集的代中的对象比该垃圾收集器所意识到的大小(size)更大,垃圾收集器的探究法可以就没法很好的工作并且这会引起大量存储空间被消耗。实例包括但是不限于小型托管(managed)对象引用极大量非托管(unmanaged)存储空间的情况。
需要一种用于跟踪和垃圾收集比该垃圾收集器所意识到的大小更大的存储空间的改进方法和系统。
概述
简短地说,在一个方面,本发明提供用于适当地垃圾收集不再被引用的存储空间的一种方法和系统。在托管代码环境中,有可能为托管对象分配非托管存储空间。一种垃圾收集器可能没有意识到非托管存储空间并且可能因而选择不收集或者延期托管对象的收集,即实质上的泄漏存储。本发明一个方面跟踪托管对象的非托管存储空间分配,并且当后续分配之间的时间大于阈值时强制垃圾收集。由托管存储空间引用的非托管存储空间在收集期间可以被释放。
结合附图并根据以下详细说明,其它的方面将变得显而易见,其附图中:
附图简述
图1是表示本发明可以在其中并入本发明的一种计算机系统的框图;
图2是一般地表示一种环境的示意性组件的框图,在该环境中本发明可以根据本发明的各个方面进行操作;
图3是根据本发明各个方面示出示例性程序所需的用于对象的存储空间使用相对于时间的图表;以及
图4和5是根据本发明各个方面一般地表示可发生以对不使用的存储空间进行有效垃圾收集的各动作的流程图。
详细说明
示意性操作环境
图1举例说明了在其上可以执行本发明的适当计算系统环境100的一种实例。该计算系统环境100仅仅是适当计算环境的一个实例,并且不旨在本发明使用或者功能的范围做出的任何限制。计算环境100不应被解释为对在示意性操作环境100中举例说明的任一组件或者组件组合具有依赖或要求。。
本发明可用许多其它通用或者专用计算机系统环境或者配置来操作。适于本发明使用公知的计算系统、环境和/或配置的实例包括但是不限于,个人电脑,服务器计算机,手提式的或者膝上型的设备、多处理器系统、基于微控制器的系统、机顶盒、可编程消费电子品、网络PC、小型机、大型机、包括任何上述系统或设备的分布计算环境等等。
本发明可以用计算机可执行指令的一般上下文描述,例如正由计算机执行的程序模块。一般地,程序模块包括执行特定任务或者执行特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明也可以在由通过通信网络链接的远程处理设备执行任务的分布式计算环境中实践。在分布式计算环境中,程序模块可以位于包括存储器存储装置的本地和远程计算机存储介质中。
参考图1,一种用于执行本发明的示意性系统包括计算机110形式的通用计算机。计算机110的组件包括但是不限于,处理单元120、系统存储器130和系统总线121,该系统总线121将包括系统存储器的各个系统组件耦合至处理单元120。系统总线121可以是各种类型总线结构的任何一种,包括使用各种总线体系结构任何一种的存储器总线或者存储控制器、外围总线和本地总线。作为示例而非限制,这种体系结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)本地总线、以及亦被称为附加板总线(Mezzanine bus)的外围组件互连(PCI)总线。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任何可访问介质,并且包括易失性和非易失性介质、以及可移动的和不可移动介质。作为示例而非限制,计算机可读介质可以包含计算机存储介质和通信介质。计算机存储介质包括以任一方法或者技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。计算机存储器介质包括但是不限于:RAM、ROM、EEPROM、闪存或者其它存储器技术;CD-ROM、数字通用盘(DVD)或者其它的光盘存储;磁带盒、磁带、磁盘存储器或者其它磁性存储;或者可用于存储所希望的信息而且可以由计算机110访问的的任何其它介质。通信介质通常具体化为诸如载波或其它传输机制等的调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并可包括任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设置或改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接的有线介质,以及诸如声学、RF、红外线和其它无限介质的无限介质。以上中任一个的组合也应包含在计算机可读介质的范围内。
系统存储器130包括易失性/或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)131以及随机存取存储器(RAM)132。包含在诸如启动时帮助在计算机110内元件之间传递信息的基本例程的基本输入/输出系统133(BIOS)通常存储在ROM 131中。RAM 132通常包含可由处理单元120即时访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图1示出操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出从不可移动、非易失性磁性介质中读取或向其写入的硬盘驱动器140、从可移动、非易失性磁盘152中读取或向其写入的磁盘驱动器151、和从诸如CD ROM或其它光学介质的可移动、非易失性光盘156中读取或向其写入的光盘驱动器155。可用于示例性操作环境的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不局限于:磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常由诸如接口140等的不可移动存储器接口连接到系统总线121,而磁盘驱动器151和光盘驱动器155则通常由诸如接口150的可移动存储器接口连接至系统总线121。
以上描述和图1中示出的驱动器及其关联计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如在图1中,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。在此为操作系统144、应用程序145、其它程序模块146和程序数据147给出不同的附图标记至少说明它们是不同的副本。用户可以通过诸如键盘162和指示设备161之类的输入装置输入命令和信息到计算机20中,所述指示设备通常被认为是鼠标、跟踪球或者触摸垫。其他输入装置(未示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、手持PC的触摸屏或者其他写字板等等。这些和其它输入设备通常由耦合至系统总线121的用户输入接口160连接到处理单元120,但是也可由诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构连接。监视器191或其它类型的显示设备也可经由诸如视频接口190的接口连接到系统总线121。除了监视器之外,计算机还可包括可以通过输出外围接口195连接的诸如扬声器197和打印机196的其它外围输出设备。
计算机110可在使用到一个或多个诸如远程计算机180的远程计算机的逻辑连接的网络化环境中操作。虽然在图1中仅仅示出了存储器存储设备181,但远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并且通常包括以上相关于计算机110描述的组件中多个或全部,在图1中所描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是也可以包括其它网络。这种网络环境在办公室、企业范围计算机网络、内联网和因特网中十分常见。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接到LAN 171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或用于通过诸如因特网的WAN 173建立通信的任何装置。内置或外置的调制解调器172可经由用户输入接口160或其它适当机制连接到系统总线121。在网络化环境中,相对于计算机110描述的程序模块或其部分可存储在远程存储器存储设备中。作为示例而非限制,图1A示出驻留在存储器设备181上的远程应用程序185。应该理解,所示网络连接是示例性的,且可以使用在计算机之间建立通信链接的其它途径。
存储管理
当用非托管代码写程序时,开发者可以为该程序使用的每个对象显式地分配和释放存储空间。如果该程序没能为对象分配存储空间并在随后尝试使用该对象(例如,经由指针),则可能发生错误。如果该程序没能在不再需要该对象之后释放存储空间,则会由于存储分配器可能相信该存储空间仍在使用中而使得该存储空间对将来的配置变得不可用。在不再需要之后不释放存储空间有时被称为存储泄漏,并且可能导致性能下降或者系统崩溃。
在托管代码中,可以不需要开发者显式地释放托管存储空间。例如,程序可以创建对象,只要需要就使用该对象,并在随后停止引用该对象。被称为垃圾收集器的存储空间管理器可以为该对象分配存储空间。在程序停止引用该对象的一段时间之后,垃圾收集器可以确定该对象是否被引用,若未被引用,则可以释放与该对象相关联的存储空间。
在托管代码中,程序可以引用对象直到该对象超范围(例如,方法被退出)或者直到该程序引起与该对象相关联的所有变量都关联至零(或者空)。
图2是一般地表示一种环境的示意性组件的框图,在该环境中本发明可以根据本发明的各个方面进行操作。环境可以包括程序205、存储器210、垃圾收集器225、分配监视器245和操作系统(OS)230。存储器210可以包括托管存储器215和非托管存储器220。
操作中,程序205可以要求经由API或者声明来创建对象。垃圾收集器225随后可以定位可用存储空间,发现适当的存储块,并且返回对程序205可访问存储空间的引用。
垃圾收集器(例如,垃圾收集器225)可以周期性地定位不再被引用的存储空间,以便该存储空间可以通过垃圾收集器225返回至存储器托管的(例如,托管存储器215)空闲池。
与对象相关联的存储块可以与3组或者更多组相关联(有时被称为“代”)。第一代(有时被称为“gen 0”)可以与那些最近被分配(例如,自从垃圾收集器225上次执行收集起)的存储块相关联。当收集与gen 0相关联的空闲存储块时,垃圾收集器225可以将未返回至空闲池的任何存储块与第二代(有时称作“gen 1”)相关联。
垃圾收集器225以比从与gen 0相关联的存储块中收集空闲存储空间更低的频率尝试从与gen 1相关联的存储块中收集空闲存储块。这样做可以避免由于频繁执行垃圾收集耗费实质处理资源而引起的处理额外开销。此外,如果程序超过一代地持续参考存储块,则该存储块更可能用于长期生存的对象。过于频繁地尝试收集与长期生存对象相关联的存储块会浪费宝贵的资源。
如果垃圾收集器225选择从gen 1存储块中收集空闲存储块,并且发现存储块仍由对象引用,垃圾收集器225就可将这些存储块与另一代(有时被称为“gen 2”)相关联。垃圾收集器225以比与gen 1相关联的存储块更低的频率尝试从与gen 2相关联的存储块中收集空闲存储块。在某些实现中,垃圾收集器225可以以比垃圾收集器225收集与gen 1相关联的空闲存储空间频繁十倍的频率收集与gen 0相关联的空闲存储空间。此外,垃圾收集器225可以比垃圾收集器225收集与gen 2相关联的空闲存储空间频繁十倍的频率收集与gen 1相关联的空闲存储空间。
有时,与某一代相关联的存储空间的量会影响垃圾收集器225每隔多久选择收集与该代相关联的空闲存储空间。例如,如果与gen 2相关联的存储块消耗了可用存储器的一大部分(例如,许多兆字节),则垃圾收集器225会因为回收大块存储空间的可能性而更为频繁地尝试收集与gen 2相关联的空闲存储空间。另一方面,如果与gen 2相关联的存储块消耗了存储器相对较小的部分,则垃圾收集器225会因为执行该工作可获取的存储空间的量相对较小而不尝试收集与gen 2相关联的任何空闲存储块。
可以采用更多或者更少的代及其他频率来收集与各代相关联的空闲存储块,而不背离本发明的精神或者范围。
当存储在托管存储器215中的小型对象(例如,图像对象235)从非托管存储器220中分配大量存储空间(例如,图像数据240)时会发生了问题。垃圾收集器通常不知道该托管对象已经分配了非托管存储空间。如果该对象生存期长到足以与gen 2代相关联,则该对象可能直到程序205关闭才返回至存储空间的空闲池。如果这种分配有大量非托管存储空间的小型对象超过一个,则对空闲存储空间的影响就被放大。在某些现代的程序中,这可以导致程序使得好几百兆字节的存储器分配给他们,尽管它们仅仅使用该存储器的小部分。在访问图像的程序中尤为如此。
程序205可以请求通过调用API并且传递包括该图像的文件的名称来创建图像对象235。例如,开发者可以将下列代码行置于应用软件中:
MyImage=new Image(″file.jpg″);(我的图像=新图像(“文件.jpg”);)
API随后就可以在托管存储器215中创建图像对象235并且还可以解码该文件,从非托管存储器220中分配存储块,将图像数据240置于非托管存储器220中,并且用垃圾收集器注册有关该图像对象235的终结器(finalizer)。MyImage引用该图像对象235。
如果与该图像对象235关联的存储空间仍由该程序205引用,就不释放该存储空间。如果与该图像对象相关联的存储空间未由程序205引用,则垃圾收集器225可以调用该图像对象的终结器。终结器随后可以释放非托管存储器220中的与该图像数据240相关联的存储空间,并且返回至垃圾收集器225。垃圾收集器225随后可以将与图像对象235相关联的存储空间返回至空闲池以便随后使用。
图3是根据本发明各个方面示出示例性程序所需的用于对象的存储空间使用相对于时间的图表。存储空间使用的轴示出了在每个示出点使用的托管和非托管存储空间。该图假设存储空间在程序不再需要它之后立即返回至空闲池。
在时刻T0,程序开始。在时刻T1,程序开始快速请求存储空间。这例如可以在载入新网页或者请求程序显示示出若干图像的页面(例如,查看相簿)时发生。
在T1之后不久,由于程序尝试为所有需要显示特定页面的对象分配存储空间,因此分配相对较快地出现。在较快的计算机中,各次分配之间的时间可以是几毫秒量级。在较慢的计算机中,各次分配之间的时间可以是几百毫秒量级。在几乎所有的机器上,在通常用于图像(例如,每个几兆字节)的各次分配期间,各次分配间隔将接近1秒。
在时刻T2,程序突然停止使用它在前请求的存储空间。例如,用户导航至应用程序内的不同窗口。当导航至不同窗口时,就不再需要显示在前显示的图象或者可将其保持在存储空间中。
在时刻T3,程序再次开始快速请求存储空间。例如,该程序响应于与该用户导航所至的窗口相关联的图像而做出上述动作。
因为该图假设在该程序不再需要存储空间之后立即将其返回至空闲池,所以图表没有表示出实际的存储空间使用。例如参见图2和5,垃圾收集器225并不在T2处的下降之后立刻收集不使用的存储空间。此外,因为垃圾收集器225会检查托管存储器,所以垃圾收集器225由于被各对象使用的托管存储空间可能很小并且认为这种检查不值得考虑,因而即使在与各对象相关联的非托管存储空间很大时都甚至不会尝试去收集不使用的存储空间。
为了使得垃圾收集器225收集不使用的托管存储空间(并且因此调用终结器以释放不使用的非托管存储空间),分配监视器245可以跟踪各分配以及分配之间的时间。分配监视器245可能是提供增强图形功能的一组组件的一部分。例如,代替包括激励图像的代码,程序可以简单地调用那些访问该组组件的API来激励该图像。
当分配小于或等于分配阈值(例如,1秒)时,分配监视器可以确定该存储空间正被快速分配以供该程序使用一段时间。当在最近分配之后分配在大于分配阈值的时刻发生时,分配监视器可以确定该程序已经停止对其在前使用的存储空间的引用(例如,响应于用户导航至新页面)并且正为其它使用分配存储空间(例如,显示新页面)。
此时,分配监视器245可以引起垃圾收集器225收集任何不使用的存储空间。分配监视器245可以请求,垃圾收集器225执行gen 1或gen 2(或者更高代,如果存在的话)垃圾收集。如果存储空间不再使用,则可导致本质的非托管存储空间返回至空闲池。
分配监视器245还可以跟踪自从上次gen 1或gen 2(或更高代,如果存在的话)垃圾收集一例已经过了多久。如果该时间比收集阈值(例如,30秒或更多)更长,则分配监视器245可以引起垃圾收集225来收集不使用的存储空间。一些程序可以在扩展的时间周期内继续频繁地分配,即便他们随时间停止引用存储空间的那些部分。如果更高级的收集(例如,gen 2)在一定量的时间内没有发生,则可能需要执行gen 2收集以回收未被引用的存储空间。即使该程序仍使用分配给它的全部存储空间,gen 2垃圾收集的每收集阈值周期也不会明显地降低性能。
分配阈值和垃圾收集阈值可以由开发者在开发期间固定,可基于计算机特性(例如,存储器大小、速度等等)来计算,可基于在特定计算机上成功释放不使用的存储空间来调谐,或者可被选择(例如,由用户、计算机开发者、或系统管理员)。
图4和5是根据本发明各个方面一般地表示可发生以进行不使用的存储空间有效垃圾收集的各动作的流程图。转向图4,在框405,操作开始。
在框410,分配监视器被调用并且传递与对象相关联的非托管存储空间的大小。分配管理器将大小添加至指示由该分配管理器跟踪的总存储空间的变量(例如,TotalMemory(总存储空间))。
在框420,做出关于TotalMemory是否大于阈值(例如,500KB或1MB)的判定。如果是,则动作在框425继续。如果不是,则动作在框455继续。阈值可以是可选的(例如,在运行时或在其之前)或固定的(例如,在开发时)。当由分配监视器跟踪的总存储空间小于或等于该阈值时,就无需执行进一步的操作。例如可以这样做来减少额外开销,特别是在存储器使用低的情况下。
在框425,变量可被设置为当前时间、最后分配时间、以及最后收集时间。在其他的实现中,这些值是在比较框435期间获得的并且可以不被分配附加变量。
在框430,存储当前分配的分配时间。这样做以便该值可用于结合图4所述的动作的后续迭代。
在框435,作出关于当前时间减去最后分配时间是否大于分配阈值的判定。如果是,则动作在框445继续;否则,则动作在框440继续。如前所述,在从最后分配阈值开始的时间较短的情况下,可以指示该程序正处于分配阶段。在从最后分配阈值开始的时间为相对较长的情况下,可以指示该程序正处于旧分配阶段随后的新分配阶段。
在框440,作出关于当前时间减去最后收集时间是否大于收集阈值的判定。如果是,则动作在框445继续;否则,则动作在框455继续。如前所述,这样做可以收集在为扩展的时间周期快速分配存储空间的程序中不使用的存储空间(而且停止引用至少一部分存储空间)。
在框445,垃圾收集器执行垃圾收集。可以命令垃圾收集器从任何一个或多个代中收集垃圾。
在框450,存储最后收集时间以供在与框440相关联的动作的后续迭代使用。
在框455和460,动作结束。在每次分配新存储器时可以重复结合图4描述的各个动作。在某些实施方式中,可以在引用非托管存储空间的托管存储空间被分配时执行结合图4描述的各动作。在某些实施方式中,可以在为图像对象分配存储空间(在托管和非托管存储器中)时执行结合图4描述的各动作。
转向图5,动作在框505开始。在框510,分配监视器被调用而且传递指示已被释放或正要被释放的非托管存储空间的量的大小参数。在与托管存储器中的对象相关联的存储空间被返回至空闲池之前被垃圾收集器调用的终结器可以调用上述方法,而且在返回垃圾收集器之前传递该大小。
在框515,从由分配监视器跟踪的总存储空间中减去该大小。如果这样移去被跟踪的总存储空间小于或等于结合图4讨论的存储阈值,则分配监视器可以停止引起垃圾收集发生直到被跟踪的总存储空间大于存储阈值为止。
在框520,动作停止。
虽然已经对将本发明的各方面应用于与图像相关联的存储空间做出了某些参考,但是应该认识到本发明的各方面也可以应用于在其中发现有用于获取并在随后去引用存储空间的模式的其他情况。
从上述详细说明中可见,提供了一种用于垃圾收集不再被引用的存储空间的方法和系统。由于易于对本发明做出各种修改和替换配置,但仍在附图中示出了其中的某些示例性实施方式而在上文做出了详细描述。然而应当理解并不旨在将本发明限制于公开的特定形式,而是相反地,旨在覆盖位于本发明精神和范围之内的所有修改、替换和等效方案。
Claims (19)
1.一种具有计算机可执行指令的计算机可读介质,包括:
存储分配存储空间的第一时间;
在第二时间分配额外的存储空间;
确定在所述第一和第二时间之间的第一经过时间;以及
如果第一经过时间大于或等于第一阈值,就引起对未引用存储块的垃圾收集。
2.根据权利要求1所述的计算机可读介质,其特征在于,还包括:
存储发生在前垃圾收集的第三时间;
确定在所述第一和第三时间之间的第二经过时间;以及
如果第二经过时间大于或等于第二阈值,就引起对未引用存储块的垃圾收集。
3.根据权利要求1所述的计算机可读介质,其特征在于,所述存储空间包括在引用非托管存储块的托管存储器中的对象,其中所述对象在所述托管存储器中占用的存储空间要远少于它在所述非托管存储器中所引用的块。
4.根据权利要求1所述的计算机可读介质,其特征在于,存储分配存储空间的第一时间包含如果所述存储空间涉及图像,就存储所述分配存储空间的第一时间。
5.根据权利要求1所述的计算机可读介质,其特征在于,存储分配存储空间的第一时间包括如果所述分配发生在另一分配之后不久,就存储所述分配存储空间的第一时间。
6.根据权利要求1所述的计算机可读介质,其特征在于,响应于托管对象调用分配监视器来报告由所述托管对象引用的非托管存储空间的大小,而发生存储分配存储空间的第一时间。
7.一种计算机可读介质,其中所述第一阈值大于其中具有存储器的计算机能够为图像分配存储空间的时间。
8.根据权利要求1所述的计算机可读介质,其特征在于,所述第一阈值是1秒。
9.根据权利要求1所述的计算机可读介质,其特征在于,所述第一阈值在开发时被固定,在运行时被调试,或者在运行时可被选择。
10.在一种计算环境中,一种方法,包括:
在托管存储器中创建图像对象,其中垃圾收集器收集所述托管存储器中不使用的存储空间;
创建由非托管存储器中的对象所引用的图像数据;以及
至少部分地基于在所述托管存储器中各图像对象分配之间的时间来执行垃圾收集。
11.根据权利要求10所述的方法,其特征在于,不使用的存储空间包括由程序在前分配以供使用并不再被所述程序所引用的存储空间。
12.根据权利要求10所述的方法,其特征在于,还包括在收集与所述对象相关联的不使用的存储空间之前调用所述图像对象的终结器方法,其中所述终结器方法将由所述对象引用的非托管存储空间返回至存储空闲池。
13.根据权利要求10所述的方法,其特征在于,还包括更新一个值,所述值指示非托管图像数据与托管存储器中的图像对象有多相关联,并且如果所述值小于存储阈值则不执行所述垃圾收集。
14.根据权利要求10所述的方法,其特征在于,所述垃圾收集器包括在其中长期生存的对象与各代相关联的分代垃圾收集器,并且其中所述垃圾收集器以比其前一代更低的频率收集与各后续代相关联的不使用的存储空间。
15.根据权利要求10所述的方法,其特征在于,响应于应用编程接口调用提供增强图形功能的API而发生在托管存储器中创建图像对象。
16.在一种计算环境中,一种装置,包括:
存储器,包括托管存储部分和非托管存储部分;
垃圾收集器,被安排从所述存储器的非托管存储部分中收集不使用的存储空间;以及
被安排用来执行动作的分配监视器,所述动作包括:
存储时间数据,所述时间数据指示存储空间何时被分配给引用所述非托管存储器中的数据的对象以及垃圾收集何时发生;
引起所述垃圾收集器基于所述时间数据执行额外的垃圾收集。
17.根据权利要求16所述的装置,其特征在于,所述时间数据包括最近在前存储空间分配发生的在先时间以及最近在前垃圾收集发生的在先时间。
18.根据权利要求17所述的装置,其特征在于,引起所述垃圾收集器基于所述时间数据执行额外的垃圾收集包括确定在所述最近在前存储空间分配发生的在先时间与当前时间之间的经过时间是否等于或超过分配阈值,如果是,就引起所述额外的垃圾收集发生。
19.根据权利要求17所述的装置,其特征在于,引起所述垃圾收集器基于所述时间数据执行额外的垃圾收集包括确定在所述最近在前垃圾收集发生的在先时间与当前时间之间的经过时间是否等于或超过收集阈值,如果是,就引起所述额外的垃圾收集发生。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/129,545 | 2005-05-13 | ||
US11/129,545 US7707232B2 (en) | 2005-05-13 | 2005-05-13 | Implementation for collecting unmanaged memory |
PCT/US2006/012691 WO2006124142A2 (en) | 2005-05-13 | 2006-04-05 | Implementation for collecting unmanaged memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101595460A true CN101595460A (zh) | 2009-12-02 |
CN101595460B CN101595460B (zh) | 2014-09-03 |
Family
ID=37420426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680016249.5A Expired - Fee Related CN101595460B (zh) | 2005-05-13 | 2006-04-05 | 用于收集非托管存储空间的实现 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7707232B2 (zh) |
KR (1) | KR101183424B1 (zh) |
CN (1) | CN101595460B (zh) |
WO (1) | WO2006124142A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063245A (zh) * | 2014-06-24 | 2014-09-24 | 用友优普信息技术有限公司 | 基于垃圾回收的内存分析优化方法及系统 |
CN107257959A (zh) * | 2015-02-13 | 2017-10-17 | 微软技术许可有限责任公司 | 托管代码中的垃圾收集控制 |
CN108153481A (zh) * | 2016-12-05 | 2018-06-12 | 北京京存技术有限公司 | 一种nand的存储块回收方法和装置 |
CN110291508A (zh) * | 2017-02-01 | 2019-09-27 | 微软技术许可有限责任公司 | 垃圾收集器 |
Families Citing this family (109)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8713524B2 (en) * | 2005-04-06 | 2014-04-29 | Microsoft Corporation | Memory management configuration |
US8701095B2 (en) * | 2005-07-25 | 2014-04-15 | Microsoft Corporation | Add/remove memory pressure per object |
US7765528B2 (en) * | 2005-09-21 | 2010-07-27 | Hewlett-Packard Development Company, L.P. | Identifying sources of memory retention |
US8095513B2 (en) * | 2006-06-05 | 2012-01-10 | Microsoft Corporation | Safe buffer |
US20070283117A1 (en) * | 2006-06-05 | 2007-12-06 | Microsoft Corporation | Unmanaged memory accessor |
US8949555B1 (en) * | 2007-08-30 | 2015-02-03 | Virident Systems, Inc. | Methods for sustained read and write performance with non-volatile memory |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
JP2010512584A (ja) | 2006-12-06 | 2010-04-22 | フュージョン マルチシステムズ,インク.(ディービイエイ フュージョン−アイオー) | 空データトークン指令を有する要求デバイスからのデータを管理する装置、システムおよび方法 |
US8037477B2 (en) * | 2007-01-23 | 2011-10-11 | Hewlett-Packard Development Company, L.P. | Efficient detection of sources of increasing memory consumption |
US8073882B2 (en) | 2007-07-11 | 2011-12-06 | Mats Stefan Persson | Method, system and computer-readable media for managing software object handles in a dual threaded environment |
US7978516B2 (en) * | 2007-12-27 | 2011-07-12 | Pliant Technology, Inc. | Flash memory controller having reduced pinout |
US7801872B2 (en) * | 2008-04-08 | 2010-09-21 | Microsoft Corporation | Providing a publishing mechanism for managed objects |
US8880775B2 (en) * | 2008-06-20 | 2014-11-04 | Seagate Technology Llc | System and method of garbage collection in a memory device |
US8726237B2 (en) * | 2009-10-28 | 2014-05-13 | Microsoft Corporation | Event handling for unmanaged code |
US8365041B2 (en) | 2010-03-17 | 2013-01-29 | Sandisk Enterprise Ip Llc | MLC self-raid flash data protection scheme |
US8566368B2 (en) | 2010-09-29 | 2013-10-22 | Microsoft Corporation | Garbage collection extensibility via managed code |
US20120239860A1 (en) | 2010-12-17 | 2012-09-20 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
CN103460194B (zh) * | 2011-03-15 | 2016-12-21 | 爱立信(中国)通信有限公司 | 对资源泄漏的检测 |
US9384129B2 (en) * | 2011-06-16 | 2016-07-05 | Microsoft Technology Licensing Llc | Garbage collection based on total resource usage and managed object metrics |
US8909982B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | System and method for detecting copyback programming problems |
US8910020B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | Intelligent bit recovery for flash memory |
CN102332005A (zh) * | 2011-08-02 | 2012-01-25 | 中兴通讯股份有限公司 | 动态自适应垃圾清理方法及系统 |
KR20130021625A (ko) * | 2011-08-23 | 2013-03-06 | 삼성전자주식회사 | 메모리 상태 변화에 따른 단말기 운용 방법 및 이를 지원하는 단말기 |
US8825721B2 (en) * | 2011-10-03 | 2014-09-02 | Oracle International Corporation | Time-based object aging for generational garbage collectors |
US8793543B2 (en) | 2011-11-07 | 2014-07-29 | Sandisk Enterprise Ip Llc | Adaptive read comparison signal generation for memory systems |
US8924815B2 (en) | 2011-11-18 | 2014-12-30 | Sandisk Enterprise Ip Llc | Systems, methods and devices for decoding codewords having multiple parity segments |
US8954822B2 (en) | 2011-11-18 | 2015-02-10 | Sandisk Enterprise Ip Llc | Data encoder and decoder using memory-specific parity-check matrix |
US9048876B2 (en) | 2011-11-18 | 2015-06-02 | Sandisk Enterprise Ip Llc | Systems, methods and devices for multi-tiered error correction |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9003264B1 (en) | 2012-12-31 | 2015-04-07 | Sandisk Enterprise Ip Llc | Systems, methods, and devices for multi-dimensional flash RAID data protection |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
US9329928B2 (en) | 2013-02-20 | 2016-05-03 | Sandisk Enterprise IP LLC. | Bandwidth optimization in a non-volatile memory system |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9136877B1 (en) | 2013-03-15 | 2015-09-15 | Sandisk Enterprise Ip Llc | Syndrome layered decoding for LDPC codes |
US9009576B1 (en) | 2013-03-15 | 2015-04-14 | Sandisk Enterprise Ip Llc | Adaptive LLR based on syndrome weight |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9092350B1 (en) | 2013-03-15 | 2015-07-28 | Sandisk Enterprise Ip Llc | Detection and handling of unbalanced errors in interleaved codewords |
US10049037B2 (en) | 2013-04-05 | 2018-08-14 | Sandisk Enterprise Ip Llc | Data management in a storage system |
US9170941B2 (en) | 2013-04-05 | 2015-10-27 | Sandisk Enterprises IP LLC | Data hardening in a storage system |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US9043517B1 (en) | 2013-07-25 | 2015-05-26 | Sandisk Enterprise Ip Llc | Multipass programming in buffers implemented in non-volatile data storage systems |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9235509B1 (en) | 2013-08-26 | 2016-01-12 | Sandisk Enterprise Ip Llc | Write amplification reduction by delaying read access to data written during garbage collection |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9442670B2 (en) | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
US9158349B2 (en) | 2013-10-04 | 2015-10-13 | Sandisk Enterprise Ip Llc | System and method for heat dissipation |
US9323637B2 (en) | 2013-10-07 | 2016-04-26 | Sandisk Enterprise Ip Llc | Power sequencing and data hardening architecture |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
CA2832571C (en) | 2013-11-07 | 2021-01-12 | Ibm Canada Limited - Ibm Canada Limitee | Allocation aware heap fragmentation metrics |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9152555B2 (en) | 2013-11-15 | 2015-10-06 | Sandisk Enterprise IP LLC. | Data management with modular erase in a data storage system |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9280429B2 (en) | 2013-11-27 | 2016-03-08 | Sandisk Enterprise Ip Llc | Power fail latching based on monitoring multiple power supply voltages in a storage device |
US9122636B2 (en) | 2013-11-27 | 2015-09-01 | Sandisk Enterprise Ip Llc | Hard power fail architecture |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9250676B2 (en) | 2013-11-29 | 2016-02-02 | Sandisk Enterprise Ip Llc | Power failure architecture and verification |
US9092370B2 (en) | 2013-12-03 | 2015-07-28 | Sandisk Enterprise Ip Llc | Power failure tolerant cryptographic erase |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
US9129665B2 (en) | 2013-12-17 | 2015-09-08 | Sandisk Enterprise Ip Llc | Dynamic brownout adjustment in a storage device |
US9549457B2 (en) | 2014-02-12 | 2017-01-17 | Sandisk Technologies Llc | System and method for redirecting airflow across an electronic assembly |
US9497889B2 (en) | 2014-02-27 | 2016-11-15 | Sandisk Technologies Llc | Heat dissipation for substrate assemblies |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9348377B2 (en) | 2014-03-14 | 2016-05-24 | Sandisk Enterprise Ip Llc | Thermal isolation techniques |
US9519319B2 (en) | 2014-03-14 | 2016-12-13 | Sandisk Technologies Llc | Self-supporting thermal tube structure for electronic assemblies |
US9485851B2 (en) | 2014-03-14 | 2016-11-01 | Sandisk Technologies Llc | Thermal tube assembly structures |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
CN103995741A (zh) * | 2014-05-29 | 2014-08-20 | 无锡商埃曲信息科技有限公司 | 一种Java虚拟机分代垃圾快速回收方法 |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US9645749B2 (en) | 2014-05-30 | 2017-05-09 | Sandisk Technologies Llc | Method and system for recharacterizing the storage density of a memory device or a portion thereof |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US9093160B1 (en) | 2014-05-30 | 2015-07-28 | Sandisk Technologies Inc. | Methods and systems for staggered memory operations |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US9070481B1 (en) | 2014-05-30 | 2015-06-30 | Sandisk Technologies Inc. | Internal current measurement for age measurements |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
US9798657B2 (en) | 2014-10-15 | 2017-10-24 | Samsung Electronics Co., Ltd. | Data storage device including nonvolatile memory device and operating method thereof |
RU2015139057A (ru) | 2015-09-14 | 2017-03-17 | ИЭмСи КОРПОРЕЙШН | Способ и система распределенного хранения данных |
KR102602694B1 (ko) | 2015-12-15 | 2023-11-15 | 삼성전자주식회사 | 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법 |
US10061697B2 (en) * | 2015-12-16 | 2018-08-28 | EMC IP Holding Company LLC | Garbage collection scope detection for distributed storage |
US10133770B2 (en) | 2015-12-16 | 2018-11-20 | EMC IP Holding Company LLC | Copying garbage collector for B+ trees under multi-version concurrency control |
US10860377B2 (en) * | 2017-03-22 | 2020-12-08 | Salesforce.Com, Inc. | Technologies for identifying thread memory allocation |
US10783022B2 (en) | 2018-08-03 | 2020-09-22 | EMC IP Holding Company LLC | Immediate replication for dedicated data blocks |
KR20210065356A (ko) | 2019-11-27 | 2021-06-04 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 |
EP4283473A1 (en) | 2021-08-02 | 2023-11-29 | Samsung Electronics Co., Ltd. | Device and method for reduction of garbage collection operations |
KR20230019629A (ko) * | 2021-08-02 | 2023-02-09 | 삼성전자주식회사 | 가비지 컬렉션의 동작 회피를 위한 장치 및 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065020A (en) * | 1998-05-27 | 2000-05-16 | Microsoft Corporation | Dynamic adjustment of garbage collection |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5604902A (en) * | 1995-02-16 | 1997-02-18 | Hewlett-Packard Company | Hole plugging garbage collection for a data storage system |
US5765174A (en) * | 1995-10-06 | 1998-06-09 | Sun Microsystems, Inc. | System amd method for distributed object resource management |
US5832529A (en) * | 1996-10-11 | 1998-11-03 | Sun Microsystems, Inc. | Methods, apparatus, and product for distributed garbage collection |
US6300962B1 (en) * | 1998-12-23 | 2001-10-09 | Scientific-Atlanta, Inc. | Method and apparatus for providing reliable graphic memory operations in a set-top box environment |
US6618738B2 (en) * | 2000-03-17 | 2003-09-09 | Fujitsu Limited | Device and method for managing memory resources by using parallel-type garbage collection |
US6763440B1 (en) * | 2000-06-02 | 2004-07-13 | Sun Microsystems, Inc. | Garbage collection using nursery regions for new objects in a virtual heap |
US6865657B1 (en) * | 2000-06-02 | 2005-03-08 | Sun Microsystems, Inc. | Garbage collector for a virtual heap |
US6542911B2 (en) * | 2001-03-01 | 2003-04-01 | Sun Microsystems, Inc. | Method and apparatus for freeing memory from an extensible markup language document object model tree active in an application cache |
US6598141B1 (en) * | 2001-03-08 | 2003-07-22 | Microsoft Corporation | Manipulating interior pointers on a stack during garbage collection |
US6748503B1 (en) * | 2001-06-27 | 2004-06-08 | Microsoft Corporation | System and method facilitating unmanaged code participation in garbage collection |
US6728738B2 (en) * | 2002-04-03 | 2004-04-27 | Sun Microsystems, Inc. | Fast lifetime analysis of objects in a garbage-collected system |
US7051026B2 (en) * | 2002-07-31 | 2006-05-23 | International Business Machines Corporation | System and method for monitoring software locks |
US7539713B2 (en) * | 2002-11-05 | 2009-05-26 | Sun Microsystems, Inc. | Allocation of likely popular objects in the train algorithm |
US7634510B2 (en) * | 2004-10-05 | 2009-12-15 | Oracle International Corporation | Method and system for time-based reclamation of objects from a recycle bin in a database |
US7398369B2 (en) * | 2004-10-28 | 2008-07-08 | International Business Machines Corporation | Memory leakage management |
US20060167961A1 (en) * | 2005-01-27 | 2006-07-27 | International Business Machines Corporation | Autonomic cache object array based on heap usage |
-
2005
- 2005-05-13 US US11/129,545 patent/US7707232B2/en not_active Expired - Fee Related
-
2006
- 2006-04-05 KR KR1020077026375A patent/KR101183424B1/ko active IP Right Grant
- 2006-04-05 CN CN200680016249.5A patent/CN101595460B/zh not_active Expired - Fee Related
- 2006-04-05 WO PCT/US2006/012691 patent/WO2006124142A2/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065020A (en) * | 1998-05-27 | 2000-05-16 | Microsoft Corporation | Dynamic adjustment of garbage collection |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063245A (zh) * | 2014-06-24 | 2014-09-24 | 用友优普信息技术有限公司 | 基于垃圾回收的内存分析优化方法及系统 |
CN107257959A (zh) * | 2015-02-13 | 2017-10-17 | 微软技术许可有限责任公司 | 托管代码中的垃圾收集控制 |
CN107257959B (zh) * | 2015-02-13 | 2020-08-28 | 微软技术许可有限责任公司 | 用于托管代码中的垃圾收集控制的系统和方法 |
CN108153481A (zh) * | 2016-12-05 | 2018-06-12 | 北京京存技术有限公司 | 一种nand的存储块回收方法和装置 |
CN110291508A (zh) * | 2017-02-01 | 2019-09-27 | 微软技术许可有限责任公司 | 垃圾收集器 |
Also Published As
Publication number | Publication date |
---|---|
WO2006124142A2 (en) | 2006-11-23 |
KR101183424B1 (ko) | 2012-09-14 |
WO2006124142A3 (en) | 2009-06-04 |
US7707232B2 (en) | 2010-04-27 |
CN101595460B (zh) | 2014-09-03 |
US20060259528A1 (en) | 2006-11-16 |
KR20080007462A (ko) | 2008-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101595460B (zh) | 用于收集非托管存储空间的实现 | |
US7310718B1 (en) | Method for enabling comprehensive profiling of garbage-collected memory systems | |
CN102782683B (zh) | 用于数据库服务器的缓冲池扩展 | |
US20100287217A1 (en) | Host control of background garbage collection in a data storage device | |
CN101809545B (zh) | 存储器管理方法及其设备 | |
US10558439B2 (en) | Automatic reference counting | |
CN103294604A (zh) | 闪存器件和使用闪存器件的电子设备 | |
KR100528973B1 (ko) | 가비지 콜렉션 방법 및 그 장치 | |
KR20140034246A (ko) | 새로운 애플리케이션을 위한 메모리 관리 모델 및 인터페이스 | |
US20150261670A1 (en) | Deferred destruction for efficient resource reclamation | |
CN108959118B (zh) | 一种数据写入的方法及装置 | |
US11579855B2 (en) | Reduced memory consumption of compiler-transformed asynchronous methods | |
WO2002103527A2 (en) | A method for using non-temporal streaming stores to improve garbage collection algorithm | |
CN111273968A (zh) | 一种对象调用方法、装置、设备及介质 | |
CN101390053A (zh) | 自适应编译的代码 | |
US20070203959A1 (en) | Apparatus and method for managing resources using virtual ID in multiple Java application environment | |
US6804762B1 (en) | Method and system for garbage collection using a dynamically tuned write barrier | |
CN112799595A (zh) | 数据处理方法、设备及存储介质 | |
US20090228537A1 (en) | Object Allocation System and Method | |
US9734204B2 (en) | Managed runtime cache analysis | |
US7653797B1 (en) | Optimizing a marking phase in mark-sweep garbage collectors by reducing paging activity | |
CN112306894A (zh) | 对象引用方法、装置、设备及存储介质 | |
CN111435302A (zh) | 一种应用程序的处理方法及装置 | |
KR100631782B1 (ko) | 객체지향 어플리케이션에서의 효율적인 메모리 관리 방법및 장치 | |
Patrou | NUMA awareness: improving thread and memory management in the JVM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150428 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150428 Address after: Washington State Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC Address before: Washington State Patentee before: Microsoft Corp. |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140903 |
|
CF01 | Termination of patent right due to non-payment of annual fee |