CN101669092B - 管理本机/受管对等体的对象寿命 - Google Patents
管理本机/受管对等体的对象寿命 Download PDFInfo
- Publication number
- CN101669092B CN101669092B CN2008800135514A CN200880013551A CN101669092B CN 101669092 B CN101669092 B CN 101669092B CN 2008800135514 A CN2008800135514 A CN 2008800135514A CN 200880013551 A CN200880013551 A CN 200880013551A CN 101669092 B CN101669092 B CN 101669092B
- Authority
- CN
- China
- Prior art keywords
- peer
- managed
- machine
- quoting
- peers
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0261—Garbage collection, i.e. reclamation of unreferenced memory using reference counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
提供了一种管理对象的寿命的系统。该系统分析多个对象上的引用来确定本机对等体的可到达性,并基于该分析来动态地在本机和受管对象寿命管理系统之间进行转移。在本机对等体不可通过本机应用程序引用到达时,该系统弱化对受管对等体的引用以避免存储器泄露,并将本机引用克隆到受管侧以避免过早收集。该系统在其中释放受管和本机对等体之间的引用并且抑制对安全句柄的终止化的对象系统关闭期间执行优化清除。该系统使用存储对受管对等体的弱引用的引用的待移除列表以消除在终止化期间发生的竞争条件。
Description
技术领域
本发明一般涉及计算机系统中的存储器管理,且更具体地涉及方便自动化对象寿命管理的系统和方法。
背景
随着计算机科学的进步,面向对象的程序设计已经成为设计人员和编程人员用来在计算机系统中实现功能的众多熟悉模型中的一个。对象模型可包括对彼此操作的一个或多个对象,这与包括作为功能集合的程序或仅包括一列指令的传统模型不同。每一对象都能够接收消息、处理数据、向其它对象发送消息,并可被看作具有不同角色或责任的独立机。
在面向对象的程序设计中,对象的对象寿命(或生命周期)是对象的创建(也被称为实例化或构造)和对象的析构之间的时间。对象可以自动地(如受管对象)或手动地(如本机或非受管对象)来创建和/或撤消。受管对象可以根据数据类型(例如元数据)来描述,并由诸如在对象不再被访问时将该对象从存储器中移除的垃圾收集器等受管环境来自动收集(例如回收)。相反,非受管对象可以从标准操作环境堆来分配,其中对象本身负责在对该对象的引用不再存在时释放其使用的存储器。这可以通过诸如例如引用计数等公知技术来实现。
如上所述,可以从受管堆来分配受管对象并自动地对其进行垃圾收集。为实现这一点,可以跟踪对受管对象的引用。在移除了对于对象的最后引用时,垃圾收集器可以回收该对象所占据的存储器,从而减轻对受管对象进行引用计数的需求。跟踪在受管代码内是可能的,因为受管环境可以跟踪对象上存在的未完成引用。当在受管代码内声明每一新对象引用时,受管环境可以将该引用添加到活引用列表。在任何给定时刻,受管环境而非对象本身因而可以知道给定对象上存在的活引用。在引用落到范围之外或改变值时,可以更新活引用的列表,并且只要引用留在受管代码中,则受管环境就可以跟踪它。
对象的实现可以被划分成本机部分和受管部分(对等体)。本机对等体的寿命可以用引用计数技术来控制,而如上所述,垃圾收集器可以管理受管对等体的寿命。在受管对象之间的某些引用通过本机代码时,受管对象可能泄露或被过早收集。
在多个受管/本机对象对场景中,只要对于两种对象中的任一对象的引用存在,则该对必定是活的。传统解决方案需要多次垃圾收集来回收对象,并且易于发生存储器泄露和过早收集,在存储器泄露中即使没有对于对象的外部引用时该对象也未被收集,而在过早收集中即使受管对象存在垃圾收集器也回收该对象。
概述
以下给出本发明的简要概述,以便提供对本发明一些方面的基本理解。本概述不是本发明的广泛概观。它并不旨在标识本发明的关键或重要元素,也不旨在描绘本发明的范围。其唯一目的是以简化的形式呈现本发明的一些概念,作为后面呈现的更加详细的描述的序言。
此处所公开并要求保护的系统在其一个方面方便对象的寿命的管理。该系统允许在本机侧的诸如引用计数系统和在受管侧的诸如垃圾收集系统等对象寿命管理系统之间进行转移。在某些阶段,该系统使用引用计数系统来控制对象对的寿命,而在其它阶段,该系统以对编程人员和/或最终用户透明的方式将寿命控制移交给垃圾收集系统。该系统可以通过基于对于对象的(直接或间接)引用的分析来动态地在两寿命管理系统之间切换以确定对象的寿命。
根据该系统的一方面,引用计数组件使用引用计数技术来计算每一对象上的引用。该引用计数组件确定每一本机对象对等体上的引用的总数,并且据此向每一本机对象对等体分配引用计数。分析组件分析本机对象上的引用。另外,该分析组件基于该分析来弱化和/或强化对象对等体之间的引用以避免存储器泄露。弱引用是对受管对等体的引用,其不阻止对该受管对象进行垃圾收集,以便在没有对受管对象的强引用的情况下它是可收集的。此外,一旦引用被弱化,则分析组件基于引用分析来将本机内引用复制到受管侧并阻止过早收集。分析组件可以方便寿命管理从引用计数系统到垃圾收集系统以及反向的转移。
根据本系统的另一方面,当在多个对象对中在本机侧上不存在外部引用时,弱化从本机对等体到受管对等体的引用。在丢弃/移除对受管对等体的受管引用时,弱化对子树内的受管对等体的引用允许对该对等体进行收集。一旦弱化了对受管对等体的引用,则该系统将本机引用克隆到受管侧并避免过早收集。如果对本机对等体作出新外部(直接和/或间接)本机引用,则再次强化对子树内的受管对等体的引用。
该系统的一个方面涉及用于释放受管和本机对等体之间的引用和/或抑制对安全句柄(SafeHandle)的终止化的优化组件。通常,安全句柄是持有对本机对象的引用的受管对象。在收集受管对象时,在受管对象的垃圾收集期间,可以使用执行最终处理的终止化机制。在对安全句柄进行垃圾收集时,其终止化步骤释放它在本机对等体上的引用。所描述的优化组件充分利用该系统的域专用属性来导出用于决定何时强化/弱化引用的静态规则集合。此外,根据本系统的一方面,如果受管对等体未携带状态,则优化组件保持其上的弱引用。
该系统的又一方面涉及引用的待移除列表,该列表用于避免竞争条件。在对受管对等体进行垃圾收集时,对弱引用对象的引用保持在待移除列表中,直到该对等体的安全句柄被终止化为止。可以在对象被收集之后的任何时间点处终止化它。这允许在必要时在终止化器运行之前重建受管对等体。
以下描述和附图阐明了本发明的某些说明性方面。然而,这些方面仅指示可使用本发明的原理的各种方式中的一些。当结合附图考虑本发明的以下详细描述时,本发明的其它优点和新颖特征将变得显而易见。
附图简述
图1示出方便对象寿命管理的示例性系统的框图。
图2示出根据本发明的一个方面的、其中在受管侧和本机侧之间划分对象的示例性场景。
图3示出根据本发明的一方面的、其中弱化对受管对等体的引用的示例性场景。
图4A-4D示出用于多个对象对的示例性垃圾收集机制。
图5A-B示出根据本发明的一个方面的用于多个对象对的垃圾收集的示例性机制,其中该多个对象对的受管对等体之间存在链接。
图6示出根据本系统的一方面的避免对象的过早收集的示例性机制。
图7示出根据本系统的一方面的优化对象寿命管理系统的框图。
图8A-B示出根据本发明的一方面的用于对受管和本机对等体的引用的数据结构。
图9示出根据本发明的一个方面的、在终止化期间避免竞争条件的、用于对受管和本机对等体的引用的数据结构。
图10示出根据本发明的一方面的方便对象寿命管理并避免存储器泄露和过早收集的过程的示例性流程图。
图11示出了可用于执行所公开的体系结构的计算机的框图。
详细描述
现在参考附图来描述所要求保护的主题,所有附图中使用相同的附图标记来指代相同的元素。在以下描述中,为解释起见,阐明了众多具体细节以提供对所要求保护的主题的全面理解。然而,很明显,所要求保护的主题可以在没有这些具体细节的情况下实施。在其它情况下,以框图形式示出了公知的结构和设备以便于描述所要求保护的主题。
如在本申请中所使用的,术语“组件”、“模块”、“系统”等一般旨在表示计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或者执行中的软件。例如,组件可以是,但不限于是,在处理器上运行的进程、处理器、对象、可执行码、执行的线程、程序和/或计算机。作为说明,运行在控制器上的应用程序和控制器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程中,并且组件可以位于一个计算机内和/或分布在两个或更多的计算机之间。作为另一示例,接口可包括I/O组件以及相关联的处理器、应用程序、和/或API组件。
此外,所要求保护的主题可以使用产生控制计算机以实现所公开的主题的软件、固件、硬件或其任意组合的标准编程和/或工程技术而被实现为方法、装置或制品。在此使用的术语“制品”旨在涵盖可以从任何计算机可读设备、载体或介质访问的计算机程序。例如,计算机可读介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁带......)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)......)、智能卡和闪存设备(例如,卡、棒、钥匙驱动器......)。另外应该明白,可以使用载波来承载计算机可读电子数据,例如那些用于发送和接收电子邮件或用于访问如因特网或局域网(LAN)等网络的数据。当然,本领域的技术人员将会认识到,在不背离所要求保护的主题的范围或精神的前提下可以对这一配置进行许多修改。
此外,在此使用词语“示例性”意指用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。相反,使用词语示例性旨在以具体的方式呈现各个概念。如本申请中所使用的,术语“或”意指包括性“或”而非互斥性“或”。即,除非另有指定或从上下文可以清楚,否则“X使用A或B”意指任何自然的包括性排列。即,如果X使用A;X使用B;或X使用A和B两者,则在任何以上情况下,都满足“X使用A或B”。另外,本申请中和所附权利要求书中所使用的冠词“一”和“一个”一般应被解释为是指“一个或多个”,除非另有指定或从上下文可以清楚指的是单数形式。
此处使用的术语“收集”、“析构”、“撤消”、“释放”等一般指对于对象的垃圾收集,其中可以收回该对象所利用的资源。一旦回收了资源则其可被分配给另一对象。
最初参考附图,图1示出控制对象102的寿命的对象寿命管理系统100。对象102的生命周期(对象寿命)是在存储器中实例化对象10直到不再使用并析构或释放对象102的时间。一般在不再使用对象102后,其可被从存储器中移除以便为其它程序或对象腾出空间来占据该对象的位置。为从存储器中移除对象,可以对不使用的对象102调用析构方法。撤消对象102可以使得对该对象的任何引用(图中未示出)变为无效。每一对象102可以具有寿命可分别由引用计数机制和垃圾收集机制来控制的本机和受管对等体(未示出)。
系统100通常可包括可以使用大多数任何引用计数技术来计算每一对象上的引用的引用计数组件104。引用可包括对象102上的对象对等体(未示出)之间的外部引用或内部引用。引用还可包括多个对象对之间的引用。引用计数组件104可以确定每一对象102上的引用的总数,并且据此向每一对象102分配引用计数。
可以使用分析组件106来分析对象102上的引用。基于该分析,分析组件106可以弱化或强化本机和受管对象对等体之间的引用。此外,还可以使用分析组件106以基于该分析来克隆对象对之间的引用。分析组件106可以基于该分析来确定寿命管理从引用计数系统到垃圾收集系统以及反向的转移。
系统100可以通过使用垃圾收集组件108来撤消或释放不使用的对象102。在对象102不可到达而使得不存在对于对象102的直接或间接引用时,可以收集该对象。在其中在本机侧和受管侧之间划分对象的场景中,通常,在本机对等体上存在本机引用的情况下受管对等体必须保持活着,并且在受管对等体上存在受管引用的情况下本机对等体必须保持活着。因此,只要存在来自任一侧的引用,都不应析构对等体中的任一个。垃圾收集组件108可以基于引用计数组件104和分析组件106所提供的对象102的可到达性信息来确定要被撤消的对象102。
图2示出根据本发明的一个方面的对象102。对象102可由两个对等体对象204、206来形成。本机对等体204可以驻留在本机侧208上并且具有对于它的本机引用210,而受管对等体206可以驻留在受管侧212上并且具有受管引用214。如果本机引用210存在,则受管对等体206必须保持活着,并且类似地,如果受管引用214存在,则本机对等体204必须保持活着。因此,如果对于对等体204、206两者中的任一个的外部引用存在,则它们都需要保持活着。本机对等体204以及受管对等体206两者均可以持有对彼此的引用216、218。
受管对等体的寿命可由垃圾收集机制来控制。垃圾收集基于程序中对象的可到达性来确定将来不会被访问的对象。可以自动地析构不可到达的对象,并且可以回收该对象所利用的资源。例如,析构对象所利用的存储器现在可以分配给新对象。因此,在受管对等体206不可从任何根引用到达时,其可被撤消或释放。此外,可以收集除循环引用之外不具有外部引用的受管对象。例如,如果对象A具有对于对象B的引用,且对象B具有对于对象A的引用,但没有对于对象A或B中的任一个的其它引用,则这两个对象是可收集的。
可以在本机侧208上使用引用计数机制来确定本机对等体的寿命。通常,基于对每一对等体的引用的数量来确定该对等体的引用计数。对等体的引用计数在创建对于它的引用时增加,而在撤消引用时减少。在计数为0时回收对等体的存储器。因此,在本机对等体204不具有对于它的引用时,其可被回收。
可以动态地协调这两种寿命管理机制,以用对用户不可见的方式来管理对象102的寿命,以便避免存储器泄露和/或过早析构。存储器泄露在本机引用210和受管引用214两者都离开而对象未被收集/析构时发生,因为它们两者都持有对彼此的引用216、218。
现在参考图3,示出其中包括本机对等体204和受管对等体206的对象102不具有对任一对等体的外部引用的示例性场景。本机对等体204可以驻留在本机侧208上而受管对等体206可以驻留在受管侧212上,以便不对于对象102进行本机或受管引用。
如果受管对等体206不具有对它的来自其它受管对象或来自其本机对等体的引用,则其可被自动析构。然而,如果受管对等体206上不具有状态且对它的引用只来自于本机对等体,则其可被析构并稍候为同一本机对等体204来重建。即,如果受管代码需要对本机对象的受管引用,则可以视需要为本机对象创建新受管对等体。受管对等体的析构和重建只有在受管对等体上不具有状态的情况下才是可能的。例如,在计算结果被存储在私有变量所引用的受管对象上并且受管对象随后被析构的情况下,如果重建该受管对象则计算结果将丢失,从而造成错误。如果受管对象不包含应用程序状态,则其可被析构。这是可能的,因为系统总是可以重建该受管对等体。这种情况对无状态对象可以成立,但对有状态对象无效。
回头参考图3,本机对等体204可以持有对受管对等体206的弱引用302。弱引用可以允许系统引用对象而不必使它免于析构。如果垃圾收集器收集可弱到达的对象,则对它的弱引用可被设置为空,使得该对象不再能够通过该弱引用来访问。
持有对受管对等体206的弱引用302可以向受管代码提供对象身份。例如,如果用户代码持有对受管对等体的弱引用,则在该用户代码再次要求该对象时,该弱引用可以确保向该用户代码提供对受管对等体206的同一引用。然而,在不存在对受管对等体206的其它受管引用时,弱引用可以允许对它进行收集。
在受管对等体206上具有受管状态的情况下,在对本机对等体204的引用计数为1使得对它的引用只有218时,对受管对等体206的引用302被弱化。在这种情况下,只有并且只要存在对受管对等体206的受管引用,则它就可以保持活着。在移除最后的受管引用时,收集受管对等体,并且终止化器可以对本机对等体204执行最终释放。然而,收集对象对的这一机制对于多个对象对需要多次垃圾收集并且可以导致存储器泄露。
图4A-D示出用于多个对象对的示例性析构机制。参考图4A,示出两个对象对(402和404、406和408),这两个对象对之间在本机侧208上具有引用410并具有对根的本机引用412。作为示例,多个对象表示内部的Canvas(画布)和Button(按钮)。可以理解,该机制不限于两个对象,如Canvas和Button,并且可以应用于大多数任何多个对象对。
图4B示出其中移除了对根,例如CCanvas(C画布)402的本机引用412(图4A)的场景。因为不存在对于对象402的外部引用,所以CCanvas402可以弱化其对MyCanvas(我的画布)404的引用414。一旦来自CCanvas402的对MyCanvas 404的引用被弱化,则MyCanvas 404可被析构,因为其不具有其它引用。
因为来自CCanvas 402的引用410和来自其受管对等体408的另一引用418,所以CControl(C控件)406的引用计数(REF)是2。因此,CControl仍然可以持有对Button 408的强引用。此外,因为Button 408具有对它的强引用,所以其不会被析构。
受管对等体MyCanvas 404具有对它的单个弱引用414,故而可被析构。在MyCanvas 404被析构时,MyCanvas的终止化器(未示出)可以对本机对等体402执行最终释放,如图4C所示。
参考图4C,对象对402-404可被析构,并且可以移除从CCanvas 402到CControl 406的引用410。因此,CControl的引用计数可以是1,因为其只具有来自其受管对等体408的一个引用418。如上所述,在本机对等体不具有外部引用时,它可以弱化对其受管对等体的引用。因此,对Button 408的引用416被弱化。
现在参考图4D,示出具有单个弱引用416的受管对等体Button 408。Button 408现在可被析构。在Button 408被析构时,可以对CControl 406执行最终释放。如可从图4A-D看到的,可能需要多次垃圾收集来析构多个对象对,并且对于对象对的树的垃圾收集的次数取决于该树的深度。
图5A-B示出用于多个对象的垃圾收集的示例性机制,其中该多个对象的受管对等体之间存在链接。继续上述Canvas和Button示例,在受管侧212上存在从Button 408到MyCanvas 404的引用502。因为不存在外部引用,所以本机对等体CCanvas 402的引用计数可以是1并且引用414可据此被弱化。受管对等体MyCanvas 404具有弱引用414,但还具有来自Button408的强引用502。MyCanvas 404是可从根到达的,由于所存在的从CControl 406到Button 408的根引用416和从Button 408到MyCanvas 404的引用502,因而不能对MyCanvas 404进行垃圾收集。每一对等体(402、404、406、408)引用计数都大于1,因此即使不存在对于对象对的外部引用,也没有可以对其进行垃圾收集的对等体,从而导致存储器泄露。
图5B示出避免参考图5A所描述的存储器泄露条件的机制。在对本机根的最后外部引用上,树中的对象的寿命取决于受管引用。因此,对子树内的受管对等体的所有引用可被弱化以避免存储器泄露。
如从图5B看到的,在本机对象对等体402、406中的任一个上均不存在外部引用(直接和/或间接)。因此,对每一受管对等体的引用414、416可被弱化。由于引用416的弱化,Button 408的引用计数可以减到0,且现在可以对其进行垃圾收集。在Button 408被垃圾收集时,引用502可被移除,并且因而MyCanvas现在可被收集。
图6示出避免参考上述示例的对于对象的过早收集的机制。本机引用410可以从本机侧208克隆到受管侧212。引用的克隆避免受管对等体的过早收集。在没有克隆引用602的情况下,受管对等体MyCanvas 404上的受管引用(未示出)不能阻止Button 408被收集。
因为在本机侧208上不存在外部引用,所以引用414和416可被弱化。此外,受管对等体Button 408现在可以具有来自MyCanvas 404的克隆引用602。因此,当在受管侧212上存在受管引用(未示出)的情况下,可以避免Button 408的过早收集,因为Button 408现在是可到达的。如果对CCanvas作出新外部本机引用,则引用414和416可被再次强化。
现在参考图7,示出包括优化组件702的对象寿命管理系统。优化组件702可被用来释放受管和本机对等体之间的引用和/或抑制对安全句柄的终止化。通常,可以使用安全句柄来提供对句柄资源的重要终止化,并避免垃圾收集过早地回收句柄。
在析构不可到达受管对象时,在受管对象的垃圾收集期间,可以使用终止化机制来执行最终处理。在安全句柄的垃圾收集期间,终止化步骤释放安全句柄在本机对等体上的引用。优化组件702充分利用系统的域专用属性来导出用于决定何时强化/弱化引用的静态规则集合。此外,根据本系统的一方面,如果受管对等体未携带状态,则优化组件702保持其上的弱引用。
图8A-B示出根据本发明的一方面的用于引用的数据结构。最初参考图8A,示出其中如上所述本机对象(或对等体)802可以持有对其受管对等体804的弱引用的数据结构。在这种情况下,受管对等体表(MPT)806引用弱引用(WeakReference)对象808而非引用受管对等体804。此外,安全句柄810可以具有对本机对象802上的引用计数的引用。
如果发生垃圾收集,则受管对等体804可被收集并且终止化器线程可以终止化安全句柄810,这释放本机对象802。可以对MPT 806进行锁定,并且该对象的条目可被移除。
现在参考图8B,示出其中本机对象(或对等体)802可以持有对其受管对等体804的强引用的数据结构。MPT 806直接引用受管对等体804。另外,安全句柄810可以具有对本机对象802的引用。在垃圾收集期间,受管对等体804可被收集并且终止化器线程可以终止化安全句柄810,这释放本机对象802。此外,可以对MPT 806进行锁定,并且该对象的条目可被移除。
图9示出用于引用的包括待移除列表902以避免竞争条件的数据结构。当在受管对等体上保持弱引用并且在前一个受管对等体被终止化之前该受管对等体被重建时,竞争条件可以发生。为阻止这一条件,在第二个表中保持对弱引用的引用,直到安全句柄被终止化为止。
在对受管对等体进行垃圾收集时,可以在待移除列表902中保持对弱引用808的引用904,直到安全句柄810被终止化为止。如果在安全句柄810被终止化之前重建受管对等体906,则来自MPT 806的引用在终止化安全句柄810时将不会移除。在终止化器线程终止化安全句柄810时,可以移除待移除列表902中的引用904。因此,可以避免竞争条件。
现在参考图10,示出用于管理对象的寿命以阻止存储器泄露和/或过早收集的方法1000。该方法可适用于管理一个或多个对象对的垃圾收集。尽管出于解释简明的目的,此处例如以流程图形式示出的一个或多个方法被示出并描述为一系列动作,但是可以理解和明白,本发明不受动作的次序的限制,因为根据本发明,某些动作可以按不同次序和/或与此处所示并描述的其它动作同时发生。例如,本领域技术人员将会明白并理解,方法可被替换地表示为一系列相互关联的状态或事件,诸如以状态图的形式。而且,并非所有示出的动作都是实施根据本发明的方法所必需的。
方法1000包括在1002处分析一个或多个对象对上的外部引用。可以确定本机侧上是否存在外部引用,如判定框1004所示。如果不存在对本机对等体的外部引用,则在1006处可以弱化对其受管对等体的引用。对受管侧的引用的弱化可以避免存储器泄露。此外,在1008处,可将本机对等体之间的内部引用克隆到受管侧,以使受管对等体在它们之间持有强引用。将引用克隆到受管侧阻止对象的过早收集。另外,如果确定在本机侧上确实存在外部引用,则如在1010处所示,可以强化来自本机对等体的对受管对等体的引用。
现在参见图11,示出了可用于执行所公开的体系结构的计算机的框图。为了向本发明的各个方面提供附加上下文,图11及以下讨论旨在提供其中可实现本发明各个方面的合适的计算环境1100的简要、概括描述。尽管本发明以上是在可在一个或多个计算机上运行的计算机可执行指令的一般上下文中进行描述的,但是本领域的技术人员将认识到,本发明也可结合其它程序模块和/或作为硬件和软件的组合来实现。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构等等。此外,本领域的技术人员可以理解,本发明的方法可用其它计算机系统配置来实施,包括单处理器或多处理器计算机系统、小型计算机、大型计算机、以及个人计算机、手持式计算设备、基于微处理器的或可编程消费电子产品等,其每一个都可操作上耦合到一个或多个相关联的设备。
本发明的所示各方面也可在其中某些任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
计算机通常包括各种计算机可读介质。计算机可读介质可以是可由计算机访问的任何可用介质,并包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来存储所需信息并可由计算机访问的任何其它介质。
通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被设定或更改的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。上述中的任意组合也应包括在计算机可读介质的范围之内。
再次参考图11,用于实现本发明的各方面的示例环境1100包括计算机1102,计算机1102包括处理单元1104、系统存储器1106和系统总线1108。系统总线1108将包括但不限于系统存储器1106的系统组件耦合到处理单元1104。处理单元1104可以是市场上可购买到的各种处理器中的任意一种。双微处理器和其它多处理器体系结构也可用作处理单元1104。
系统总线1108可以是若干种总线结构中的任一种,这些总线结构还可互连到存储器总线(带有或没有存储器控制器)、外围总线、以及使用各类市场上可购买到的总线体系结构中的任一种的局部总线。系统存储器1106包括只读存储器(ROM)1110和随机存取存储器(RAM)1112。基本输入/输出系统(BIOS)储存在诸如ROM、EPROM、EEPROM等非易失性存储器1110中,其中BIOS包含帮助诸如在启动期间在计算机1102内的元件之间传输信息的基本例程。RAM 1112还可包括诸如静态RAM等高速RAM来用于高速缓存数据。
计算机1102还包括内置硬盘驱动器(HDD)1114(例如,EIDE、SATA),该内置硬盘驱动器1114还可被配置成在合适的机壳(未示出)中外部使用;磁软盘驱动器(FDD)1116(例如,从可移动磁盘1118中读取或向其写入);以及光盘驱动器1120(例如,从CD-ROM盘1122中读取,或从诸如DVD等其它高容量光学介质中读取或向其写入)。硬盘驱动器1114、磁盘驱动器1116和光盘驱动器1120可分别通过硬盘驱动器接口1124、磁盘驱动器接口1126和光盘驱动器接口1128来连接到系统总线1108。用于外置驱动器实现的接口1124包括通用串行总线(USB)和IEEE 1194接口技术中的至少一种或两者。其它外置驱动器连接技术在本发明所考虑的范围之内。
驱动器及其相关联的计算机可读介质提供了对数据、数据结构、计算机可执行指令等的非易失性存储。对于计算机1102,驱动器和介质容纳适当的数字格式的任何数据的存储。尽管以上对计算机可读介质的描述涉及HDD、可移动磁盘以及诸如CD或DVD等可移动光学介质,但是本领域的技术人员应当理解,示例操作环境中也可使用可由计算机读取的任何其它类型的介质,诸如zip驱动器、磁带盒、闪存卡、盒式磁带等等,并且任何这样的介质可包含用于执行本说明书的方法的计算机可执行指令。
多个程序模块可存储在驱动器和RAM1112中,包括操作系统1130、一个或多个应用程序1132、其它程序模块1134和程序数据1136。所有或部分操作系统、应用程序、模块和/或数据也可被高速缓存在RAM 1112中。可以理解,本说明书可用各种市场上可购得的操作系统或操作系统的组合来实现。
用户可以通过一个或多个有线/无线输入设备,例如键盘1138和诸如鼠标1140等定点设备将命令和信息输入到计算机1102中。其它输入设备(未示出)可包括话筒、IR遥控器、操纵杆、游戏手柄、指示笔、触摸屏等等。这些和其它输入设备通常通过耦合到系统总线1108的输入设备接口1142连接到处理单元1104,但也可通过其它接口连接,如并行端口、IEEE1194串行端口、游戏端口、USB端口、IR接口等等。
监视器1144或其它类型的显示设备也经由接口,诸如视频适配器1146连接至系统总线1108。除了监视器1144之外,计算机通常包括诸如扬声器、打印机等其它外围输出设备(未示出)。
计算机1102可使用经由有线和/或无线通信至一个或多个远程计算机,诸如远程计算机1148的逻辑连接在网络化环境中操作。远程计算机1148可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其它常见的网络节点,并且通常包括相对于计算机1102描述的许多或所有元件,尽管为简明起见仅示出了存储器/存储设备1150。所描绘的逻辑连接包括到局域网(LAN)1152和/或例如广域网(WAN)1154等更大的网络的有线/无线连接。这一LAN和WAN联网环境常见于办公室和公司,并且方便了诸如内联网等企业范围计算机网络,所有这些都可连接到例如因特网等全球通信网络。
当在LAN网络环境中使用时,计算机1102通过有线和/或无线通信网络接口或适配器1156连接到局域网1152。适配器1156可以便于到LAN1152的有线或无线通信,并且还可包括其上设置的用于与无线适配器1156通信的无线接入点。
当在WAN连网环境中使用时,计算机1102可包括调制解调器1158,或连接到WAN 1154上的通信服务器,或具有用于通过WAN 1154,诸如通过因特网建立通信的其它装置。或为内置或为外置以及有线或无线设备的调制解调器1158经由串行端口接口1142连接到系统总线1108。在网络化环境中,相对于计算机1102所描述的程序模块或其部分可以存储在远程存储器/存储设备1150中。应该理解,所示网络连接是示例,并且可以使用在计算机之间建立通信链路的其它手段。
计算机1102可用于与操作上设置在无线通信中的任何无线设备或实体通信,这些设备或实体例如有打印机、扫描仪、台式和/或便携式计算机、便携式数据助理、通信卫星、与无线可检测标签相关联的任何一个设备或位置(例如,公用电话亭、报亭、休息室)以及电话。这至少包括Wi-Fi和蓝牙TM无线技术。由此,通信可以如对于常规网络那样是预定义结构,或者仅仅是至少两个设备之间的自组织(ad hoc)通信。
Wi-Fi,即无线保真,允许从家里沙发、酒店房间的床上或工作的会议室连接到因特网而不需要线缆。Wi-Fi是一种类似蜂窝电话中使用的无线技术,它使得诸如计算机等设备能够在室内和室外,在基站范围内的任何地方发送和接收数据。Wi-Fi网络使用称为IEEE 802.11(a、b、g等等)的无线电技术来提供安全、可靠、快速的无线连接。Wi-Fi网络可用于将计算机彼此连接、连接到因特网以及连接到有线网络(使用IEEE 802.3或以太网)。Wi-Fi网络在未许可的2.4和5GHz无线电波段内工作,例如以11Mbps(802.11a)或54Mbps(802.11b)数据速率工作,或者具有包含两个波段(双波段)的产品,因此该网络可提供类似于许多办公室中使用的基本10BaseT有线以太网的真实性能。
上面所描述的包括本发明的各个示例。当然,出于描述本发明的目的而描述每一个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,本发明的许多进一步的组合和排列都是可能的。因此,本发明旨在涵盖所有这些落入所附权利要求书的精神和范围内的更改、修改和变化。此外,就在说明书或权利要求书中使用术语“包括”而言,这一术语旨在以与术语“包含”在被用作权利要求书中的过渡时所解释的相似的方式为包含性的。
Claims (19)
1.一种对象寿命管理系统,包括:
确定一个或多个对象(102)的引用计数的引用计数组件(104);
基于对所述引用计数的分析来在本机和受管对象寿命管理系统之间动态地转移对象(102)的分析组件(106);
基于所述引用计数组件(104)和所述分析组件(106)所提供的信息来回收一个或多个受管对象所利用的资源的垃圾收集组件(108);以及
待移除列表,其存储对受管对等体上的弱引用的引用,以通过保持对所述弱引用的引用直到受管对象对等体被终止化为止来在终止化期间避免竞争条件,其中终止化释放所述受管对象对等体在本机对等体上的引用。
2.如权利要求1所述的系统,其特征在于,所述分析组件分析对所述一个或多个对象的本机对等体的外部引用。
3.如权利要求2所述的系统,其特征在于,在不存在对所述本机对等体的外部引用时,所述分析组件弱化从所述本机对等体到受管对等体的引用,所述外部引用是直接引用或间接引用中的至少一个。
4.如权利要求2所述的系统,其特征在于,在对所述本机对等体作出直接或间接外部引用中的至少一个时,所述分析组件强化从所述本机对等体到受管对等体的引用。
5.如权利要求3所述的系统,其特征在于,所述分析组件将多个本机对等体之间的引用复制到所述受管侧。
6.如权利要求1所述的系统,其特征在于,还包括用于在对象系统的关闭期间释放受管和本机对等体之间的引用的优化组件。
7.如权利要求1所述的系统,其特征在于,还包括用于在对象系统的关闭期间抑制对至少一个安全句柄的终止化的优化组件。
8.一种方便对象寿命管理的系统,包括:
用于分析一个或多个对象(102)上的引用的装置(104);
用于基于所述分析来在本机和受管对象寿命管理系统之间动态地进行转移的装置(106);
用于使用所述本机或受管对象寿命管理系统(108)中的至少一个来析构不使用的对象的装置;以及
用于存储对受管对等体上的弱引用的引用以通过保持对所述弱引用的引用直到受管对象对等体被终止化为止来在终止化期间避免竞争条件的装置,其中终止化释放所述受管对象对等体在本机对等体上的引用。
9.如权利要求8所述的系统,其特征在于,还包括用于确定所述一个或多个对象上的直接或间接外部引用中的至少一个的装置。
10.如权利要求9所述的系统,其特征在于,还包括基于所述分析对引用进行弱化、强化、或复制中的至少一个的装置。
11.如权利要求10所述的系统,其特征在于,还包括用于弱化从所述一个或多个对象的所述本机对等体到受管对等体的引用以避免存储器泄露的装置,所述对引用的弱化是基于对所述本机对等体的外部引用的分析的。
12.如权利要求10所述的系统,其特征在于,还包括用于将所述本机对等体之间的引用复制到受管侧以避免所述受管对等体的过早收集的装置,所述对引用的复制是基于对所述本机对等体的外部引用的分析的。
13.如权利要求8所述的系统,其特征在于,还包括用于在对象系统关闭期间释放所述一个或多个对象的受管和本机对等体之间的引用的装置。
14.如权利要求8所述的系统,其特征在于,还包括用于在对象系统关闭期间抑制对受管对等体的安全句柄的终止化的装置。
15.一种动态地在本机和受管对象寿命管理系统之间进行转移的方法,所述方法阻止受管对象对等体的存储器泄露或过早析构中的至少一个,所述方法包括:
分析一个或多个本机对象对等体上的引用(1002);
基于所述分析来在本机和受管对象寿命管理系统之间动态地进行转移(1004);
使用所述本机或受管对象寿命管理系统中的至少一个来回收不使用的对象所利用的资源;以及
存储对受管对等体上的弱引用的引用,以通过保持对所述弱引用的引用直到受管对象对等体被终止化为止来在终止化期间避免竞争条件,其中终止化释放所述受管对象对等体在本机对等体上的引用。
16.如权利要求15所述的方法,其特征在于,还包括基于所述分析来弱化或强化对所述受管对象对等体的至少一个引用。
17.如权利要求15所述的方法,其特征在于,还包括基于所述分析来将本机内引用复制到受管侧。
18.如权利要求15所述的方法,其特征在于,还包括通过释放所述受管对象对等体和所述本机对象对等体之间的引用或抑制对所述受管对象对等体的安全句柄的终止化中的至少一个来优化对象系统关闭。
19.一种动态地在本机和受管对象寿命管理系统之间进行转移的系统,所述系统阻止受管对象对等体的存储器泄露或过早析构中的至少一个,所述系统包括:
用于分析一个或多个本机对象对等体上的引用的装置;
用于基于所述分析来在本机和受管对象寿命管理系统之间动态地进行转移的装置;
用于使用所述本机或受管对象寿命管理系统中的至少一个来回收不使用的对象所利用的资源的装置;以及
用于存储对受管对等体上的弱引用的引用以通过保持对所述弱引用的引用直到受管对象对等体被终止化为止来在终止化期间避免竞争条件的装置,其中终止化释放所述受管对象对等体在本机对等体上的引用。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/741,549 | 2007-04-27 | ||
US11/741,549 US9785549B2 (en) | 2007-04-27 | 2007-04-27 | Managing object lifetime for native/managed peers |
PCT/US2008/058213 WO2008134163A1 (en) | 2007-04-27 | 2008-03-26 | Managing object lifetime for native/managed peers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101669092A CN101669092A (zh) | 2010-03-10 |
CN101669092B true CN101669092B (zh) | 2013-09-11 |
Family
ID=39888268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008800135514A Active CN101669092B (zh) | 2007-04-27 | 2008-03-26 | 管理本机/受管对等体的对象寿命 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9785549B2 (zh) |
EP (1) | EP2153317B1 (zh) |
JP (1) | JP5452474B2 (zh) |
CN (1) | CN101669092B (zh) |
BR (1) | BRPI0809929A2 (zh) |
WO (1) | WO2008134163A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5031470B2 (ja) * | 2007-07-19 | 2012-09-19 | 株式会社日立製作所 | メモリ管理方法、情報処理装置及びメモリ管理プログラム |
US8417744B2 (en) * | 2011-03-23 | 2013-04-09 | Microsoft Corporation | Techniques to manage a collection of objects in heterogeneous environments |
US9384129B2 (en) | 2011-06-16 | 2016-07-05 | Microsoft Technology Licensing Llc | Garbage collection based on total resource usage and managed object metrics |
US9053017B2 (en) * | 2011-09-09 | 2015-06-09 | Microsoft Technology Licensing, Llc | Managing object lifetime in a cyclic graph |
US9229743B2 (en) | 2011-09-23 | 2016-01-05 | International Business Machines Corporation | Prevention of classloader memory leaks in multitier enterprise applications |
US20140040326A1 (en) | 2012-07-31 | 2014-02-06 | International Business Machines Corporation | Garbage collection of an object |
JP6051733B2 (ja) * | 2012-09-25 | 2016-12-27 | 日本電気株式会社 | 制御システム、制御方法、及び、制御プログラム |
US9229959B2 (en) | 2013-01-04 | 2016-01-05 | Microsoft Technology Licensing, Llc | Object graph partial immutability and isolation enforcement |
US9098269B2 (en) | 2013-01-04 | 2015-08-04 | Microsoft Technology Licensing, Llc | System and method to ensure resource access safety with immutable object types |
US9009203B2 (en) * | 2013-02-19 | 2015-04-14 | Sap Se | Lock-free, scalable read access to shared data structures using garbage collection |
CN103226476B (zh) * | 2013-05-20 | 2016-06-08 | 张永强 | 垃圾对象检测方法和装置 |
US9600551B2 (en) | 2013-10-24 | 2017-03-21 | Sap Se | Coexistence of message-passing-like algorithms and procedural coding |
US9684685B2 (en) | 2013-10-24 | 2017-06-20 | Sap Se | Using message-passing with procedural code in a database kernel |
US9183020B1 (en) | 2014-11-10 | 2015-11-10 | Xamarin Inc. | Multi-sized data types for managed code |
US9213638B1 (en) * | 2015-03-24 | 2015-12-15 | Xamarin Inc. | Runtime memory management using multiple memory managers |
US10296314B2 (en) * | 2016-11-01 | 2019-05-21 | Facebook, Inc. | Detecting and remedying memory leaks caused by object reference cycles |
US9983978B1 (en) | 2017-03-08 | 2018-05-29 | Microsoft Technology Licensing, Llc | Querying an indexed time-travel trace |
US10185645B2 (en) | 2017-03-08 | 2019-01-22 | Microsoft Technology Licensing, Llc | Resource lifetime analysis using a time-travel trace |
US9934126B1 (en) | 2017-03-08 | 2018-04-03 | Microsoft Technology Licensing, Llc | Indexing a trace by insertion of reverse lookup data structures |
US9934127B1 (en) | 2017-03-08 | 2018-04-03 | Microsoft Technology Licensing, Llc | Indexing a trace by insertion of key frames for replay responsiveness |
US9959194B1 (en) | 2017-03-08 | 2018-05-01 | Microsoft Technology Licensing, Llc | Indexing a trace by insertion of memory snapshots for replay responsiveness |
US9940369B1 (en) | 2017-03-08 | 2018-04-10 | Microsoft Technology Licensing, Llc | Searching an indexed time-travel trace |
US10282274B2 (en) | 2017-06-14 | 2019-05-07 | Microsoft Technology Licensing, Llc | Presenting differences between code entity invocations |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5873105A (en) * | 1997-06-26 | 1999-02-16 | Sun Microsystems, Inc. | Bounded-pause time garbage collection system and method including write barrier associated with a source instance of a partially relocated object |
US5918235A (en) * | 1997-04-04 | 1999-06-29 | Hewlett-Packard Company | Object surrogate with active computation and probablistic counter |
CN1839381A (zh) * | 2003-08-15 | 2006-09-27 | 微软公司 | 维护基于组件的软件产品 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5274804A (en) | 1991-11-20 | 1993-12-28 | Parcplace Systems | Automatic storage-reclamation postmortem finalization process |
US5398334A (en) | 1992-04-06 | 1995-03-14 | General Electric Company | System for automatic garbage collection using strong and weak encapsulated pointers |
US5732270A (en) | 1994-09-15 | 1998-03-24 | Visual Edge Software Limited | System and method for providing interoperability among heterogeneous object systems |
US5765174A (en) | 1995-10-06 | 1998-06-09 | Sun Microsystems, Inc. | System amd method for distributed object resource management |
US5794256A (en) | 1996-12-12 | 1998-08-11 | Microsoft Corporation | Pointer swizzling facility using three-state references to manage access to referenced objects |
US6473773B1 (en) * | 1997-12-24 | 2002-10-29 | International Business Machines Corporation | Memory management in a partially garbage-collected programming system |
US6308185B1 (en) | 1998-03-06 | 2001-10-23 | Sun Microsystems, Inc. | Methods and apparatus for generational dynamic management of computer memory |
US6681263B1 (en) * | 1998-03-31 | 2004-01-20 | Intel Corporation | Control of software object lifetime |
US6865657B1 (en) | 2000-06-02 | 2005-03-08 | Sun Microsystems, Inc. | Garbage collector for a virtual heap |
US6654773B2 (en) | 2001-02-27 | 2003-11-25 | Tajea Corporation | Method of deterministic garbage collection |
US6728738B2 (en) | 2002-04-03 | 2004-04-27 | Sun Microsystems, Inc. | Fast lifetime analysis of objects in a garbage-collected system |
US7546607B2 (en) | 2002-11-19 | 2009-06-09 | Microsoft Corporation | Native code exposing virtual machine managed object |
US7143124B2 (en) * | 2002-12-06 | 2006-11-28 | Sun Microsystems, Inc. | Detection of dead regions during incremental collection |
US7072905B2 (en) | 2002-12-06 | 2006-07-04 | Sun Microsystems, Inc. | Better placement of objects reachable from outside a generation managed by the train algorithm |
US7519640B1 (en) * | 2004-06-30 | 2009-04-14 | Sun Microsystems, Inc. | Better placement of dying objects in a generation managed by the train algorithm |
US8701095B2 (en) | 2005-07-25 | 2014-04-15 | Microsoft Corporation | Add/remove memory pressure per object |
US7409489B2 (en) | 2005-08-03 | 2008-08-05 | Sandisk Corporation | Scheduling of reclaim operations in non-volatile memory |
CN101046755B (zh) * | 2006-03-28 | 2011-06-15 | 郭明南 | 一种计算机自动内存管理的系统及方法 |
-
2007
- 2007-04-27 US US11/741,549 patent/US9785549B2/en active Active
-
2008
- 2008-03-26 WO PCT/US2008/058213 patent/WO2008134163A1/en active Application Filing
- 2008-03-26 BR BRPI0809929-4A2A patent/BRPI0809929A2/pt active Search and Examination
- 2008-03-26 EP EP08744362.8A patent/EP2153317B1/en active Active
- 2008-03-26 CN CN2008800135514A patent/CN101669092B/zh active Active
- 2008-03-26 JP JP2010506370A patent/JP5452474B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918235A (en) * | 1997-04-04 | 1999-06-29 | Hewlett-Packard Company | Object surrogate with active computation and probablistic counter |
US5873105A (en) * | 1997-06-26 | 1999-02-16 | Sun Microsystems, Inc. | Bounded-pause time garbage collection system and method including write barrier associated with a source instance of a partially relocated object |
CN1839381A (zh) * | 2003-08-15 | 2006-09-27 | 微软公司 | 维护基于组件的软件产品 |
Also Published As
Publication number | Publication date |
---|---|
EP2153317B1 (en) | 2014-11-26 |
EP2153317A4 (en) | 2012-12-12 |
JP2010525490A (ja) | 2010-07-22 |
CN101669092A (zh) | 2010-03-10 |
WO2008134163A1 (en) | 2008-11-06 |
EP2153317A1 (en) | 2010-02-17 |
US9785549B2 (en) | 2017-10-10 |
US20080270482A1 (en) | 2008-10-30 |
JP5452474B2 (ja) | 2014-03-26 |
BRPI0809929A2 (pt) | 2014-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101669092B (zh) | 管理本机/受管对等体的对象寿命 | |
CN102750238B (zh) | 存储器管理系统以及管理存储器的方法 | |
US8806114B2 (en) | Dynamic storage hierarchy management | |
RU2544777C2 (ru) | Динамическое размещение данных точных копий | |
US7117294B1 (en) | Method and system for archiving and compacting data in a data storage array | |
CN107533507A (zh) | 根据日志结构管理存储装置中的数据 | |
CN100461164C (zh) | 用于基于版本控制的触发器的系统和方法 | |
CN101268620B (zh) | 用于管理设备管理对象的设备管理系统和方法 | |
CN101673192B (zh) | 时序化的数据处理方法、装置及系统 | |
CN102708064A (zh) | 从休眠中多阶段恢复 | |
WO2009042920A2 (en) | Lazy updates to indexes in a database | |
CN105159800B (zh) | 数据恢复方法、数据备份方法及相关设备、系统 | |
CN102713824A (zh) | 基于未来使用估计的分配存储器 | |
CN110875850B (zh) | 一种固件升级方法、系统、可读存储介质及终端设备 | |
US11514025B2 (en) | Snapshot conscious internal file data modification for network-attached storage | |
KR101766790B1 (ko) | 메인 메모리 데이터 베이스를 관리 하기 위한 방법 및 컴퓨팅 장치 | |
CN101911010B (zh) | Javascript网格中的异步多级撤消支持 | |
CN103678337A (zh) | 数据清除方法、装置及系统 | |
US20170123689A1 (en) | Pipelined Reference Set Construction and Use in Memory Management | |
ES2812771T3 (es) | Método y aparato de almacenamiento de datos para terminal móvil | |
KR101997494B1 (ko) | 메인프레임 시스템의 데이터를 실시간으로 개방형 시스템에서 사용하기 위한 방법 | |
US8347046B2 (en) | Policy framework to treat data | |
CN114281242A (zh) | 存储器负载均衡的方法、装置和设备 | |
KR101609732B1 (ko) | 메인 메모리 데이터 베이스의 관리 방법 | |
US20090327577A1 (en) | Hybrid storage |
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: 20150512 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150512 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |