CN1290897A - 可动态调节而且可配置的废料收集程序用的方法和*** - Google Patents

可动态调节而且可配置的废料收集程序用的方法和*** Download PDF

Info

Publication number
CN1290897A
CN1290897A CN00118852.6A CN00118852A CN1290897A CN 1290897 A CN1290897 A CN 1290897A CN 00118852 A CN00118852 A CN 00118852A CN 1290897 A CN1290897 A CN 1290897A
Authority
CN
China
Prior art keywords
control variable
garbage collector
data handling
handling system
instruction
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
Application number
CN00118852.6A
Other languages
English (en)
Other versions
CN1201249C (zh
Inventor
K·R·劳伦斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1290897A publication Critical patent/CN1290897A/zh
Application granted granted Critical
Publication of CN1201249C publication Critical patent/CN1201249C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

用于可动态调整且可配置的废料收集程序的方法、***和计算机程序产品。该动态废料收集程序获得环境变量或变量组或参数的数值。这些变量可通过用户输入设置或在配置计算机平台时设置。变量值可在执行废料收集程序期间修改或更新,废料收集程序接收或取回新修改的值。然后,废料收集程序根据包含了环境变量或参数数值的行为算法或根据由环境变量所选的行为算法执行存储区管理功能。

Description

可动态调节而且可配置的废料收集程序用的方法和***
本发明提供改进的数据处理***,特别是提供为在数据处理***中进行存储器管理的方法和装置。更特别的是,本发明对数据处理***中的废料收集程序内的功能性进行了改进。
虚拟机通常用于从被叫做堆的空白存储区为一个对象的示例分配存储区,比如Java(一种计算机语言)虚拟机(JVM)。将该堆中的存储区分配和释放通常是以设定块的形式进行的。在一个Java虚拟机示例内存在着一个堆(heap)。不过,对于Java虚拟机的每个示例而言存在着各自的一堆。由于每个应用都和Java虚拟机的单一例子关联,两个Java应用程序将不会破坏或者错用另一方的堆数据。Java虚拟机有把堆上的存储区分配给新对象的指令,但是没有释放或者解分配以前分配的存储区的指令。所以,Java虚拟机需要确定是否以及何时释放或解分配被不再为运行应用程序所引用的对象占据的存储区。Java虚拟机里的废料收集(无用单元收集)程序进行废料收集,以便收回不再被某应用程序引用的对象使用的存储区空间。然后收回的存储区通过将该存储区空间重新分配给其它对象而得到再利用。
Java虚拟机(JVM)的体系结构主要依靠废料收集的使用,作为其存储区管理策略的核心部分。废料收集包括以下内容:自动确定存储区中哪些块可以获得释放,办法是当它们在程序执行期间超出“范围”的时候将其标记为不再为该应用程序所需要;周期性地收集全部这些存储区块;将它们返还给堆;并且将这些块标记为可以使用。这种“废料收集”处理的进行必须有一定的技巧,因为废料收集处理过程本身在释放资源的时候会消耗一些***资源,尤其是处理器时间。
虚拟机平台是正在发展的计算平台,而Java是这些平台中最流行的。Java的一个最重要的特征是它的可移植性。在“一次写入,任何地方运行”的概念下,可以想象Java应用程序或Java小应用程序可以在巨型计算机上运行,并且其不用修改即可在手持式装置,个人数字助理(PDA),打印机或一些其他输出设备上运行。很明显,PDA和巨型计算机有着明显不同的计算资源。在每个此类平台上都能运行的Java虚拟机可以有大小迥异的存储区或带宽供其支配,并且一个适当设计的JVM应该利用可以利用的资源同时实现可移植性的目标。为了在存储区管理方面实现这些目标,合乎需要的是采用单一的JVM设计即可解决有关性能和可移植性的共同问题。
JVM所使用的准确废料收集策略将视JVM执行其操作所基于的***类型而变化。在当前的JVM方案中,废料收集程序是JVM的“内置”部件,即对于不同的情况不能***不同的废料收集程序。所以,为某个计算机平台采用某个JVM的做法通常规定将在JVM内使用的废料收集策略。
在不同的废料收集程序方案中使用了许多不同的算法。这些算法通常根据执行Java程序所基于的环境类型而加以调整。例如,多用户的多处理机环境下的服务器应用程序往往有着和台式电脑环境不同的存储器利用分布。此外,嵌入Java的设备(比如蜂窝电话)和手持装置(比如使用微软公司WinCE操作***的那些装置)采用了不同的存储器使用分布情况。
对不同的JVM采用不同的废料收集程序的做法对于JVM的供应商来说过于昂贵。单一的废料收集程序在设计后能够实现一种特别的策略,而不能“随意”加以修改从而改变其策略,并且,单一的废料收集程序根据JVM执行操作所基于的计算机平台被置入每个JVM示例。然后JVM的供应商必须跟踪这些JVM示例,为其提供服务和支持。
加之,人们不能保证所安装的JVM的性能将达到给定水平。在任何给定的一天,某一组废料收集特性,即废料收集算法测量标准,对于某一设备可能有较好的表现,但对于另一个装置则不会有同样的表现。例如具有少量存储器的装置可能需要主动性较强的废料收集程序,而有着许多存储器的大服务器可以采取不太严格的方案。不过,如果在稍后的某个时候,在已经安装了JVM的设备上添加存储器,则JVM废料收集策略不能加以修改以适应存储区的空间的增加。在另一个例子中,安装了JVM的服务器可以通过补充处理器而加以修改。在每个例子中,不同的JVM将需要安装不同类型的废料收集算法,以便调节废料收集程序的性能使其适应硬件平台的性能特性。重新安装一个完整的Java环境较为昂贵,而且需要花费较多时间。
因此,较为有利的是在数据处理***的存储器管理方面有所改善的方法和装置。特别有利的是采用改进的废料收集程序管理存储器的方法和装置。
本发明提供用于可动态调节而且可配置的废料收集程序的方法,***和计算机程序产品。环境变量或变量组或参数的数值由动态的废料收集程序获得。这些变量可以经用户输入,或者在计算机平台的配置之时设定。变量的值可以在执行废料收集程序期间被修改,或者更新,所述废料收集程序接收,或者取回新修改的值。然后,废料收集程序根据内含环境变量或参数的值的行为算法,或者根据由环境变量所选择的行为算法执行存储区管理功能。
被认为是本发明特色的新颖特征陈述在后附的权利要求书中。但是,当结合有关附图阅读下文对作为例证的实施例的详细说明之后,将会对本发明本身,以及使用的优选模式,其更进一步的目标和优点有充分的理解:
图1是根据本发明的优选实施例的描述可以实施本发明的数据处理***的图形表示;
图2是可以实现本发明的数据处理***的内部部件的方框图;
图3是在可以实现本发明的计算机***内操作的各软件成分的关系的方框图;
图4是按照本发明的优选实施例的Java虚拟机的方框图;
图5是描写在实现本发明的数据处理***中的软件成分和数据文件之间数据流的方框图;
图6是在用于设置和储存拟在动态废料收集程序内使用的环境变量的流程图;
图7是描写动态废料收集程序为使本身适用于其当前实行环境中适当的更新过程而进行自身配置的过程的流程图;
图8是描写废料收集程序动态接收环境变量的更新值以便对废料收集程序动态配置的过程的流程图;
图9是在描写根据本发明动态废料收集程序借以操作的过程的流程图;以及,
图10A-10B是允许废料收集程序动态选取预定义配置的设置组合的表格。
现在参照图1,该图是根据本发明的优选实施例可以实施本发明的数据处理***。图中表示了一个个人计算机100,它包括***单元110,视频显示终端102,键盘104,存储装置108和鼠标106,存储装置108可以包括软盘驱动器和其他类型的永久和可拆卸的储存介质。其它的输入装置也可以被包括在个人计算机100中。个人计算机100可以采用任何类似IBM AptivaTM计算机(位于Armonk,纽约的国际商用机器公司的产品)的适当计算机来实现。尽管图中所描写的是个人计算机,本发明的其他实施例也可以在其他种类的数据处理***,比如网络计算机,基于Web的电视机顶盒,因特网设备等等中实现。另外,计算机100优选包括可以以驻留在工作于计算机100内的计算机可读介质之中的***软件的形式实施的图形用户界面。
现在参看图2,这是可以实现本发明的数据处理***的内部部件的方框图。数据处理***200是类似图1计算机100的个人计算机例子。数据处理***200使用***部件互连(PCI)的本地总线结构。尽管所描写的例子使用了PCI总线,但是也可以使用其它总线结构,比如微通道体系结构和ISA。处理器202和主存储器204经PCI桥208和PCI本地总线206连接。PCI桥208也可以包括用于处理器202的集成存储控制器和超高速缓存。与PCI本地总线206的补充性连接可以通过直接的部件互连或者经***式部件板进行。在所描写的例子中,局域网(LAN)适配器210,SCSI主机总线适配器212和扩展总线接口214经直接的部件连接和PCI本地总线206连接。相反,音频适配器216,图形适配器218和音频/视频适配器219经***到扩充槽中的扩充板和PCI本地总线206连接。扩展总线接口214给键盘和鼠标适配器220,调制解调器222和补充性存储器224提供连接。SCSI主机总线适配器212为硬盘驱动器226,磁带机228和CD-ROM驱动器230提供连接。典型的PCI本地总线实施方案将支持3或者4个PCI扩充槽或***部件连接器。
一个操作***在处理器202上运行,并被用来对图2数据处理***200内的各种部件进行协调和控制。操作***可以是市面上卖的操作***,比如从国际商用机器公司可以购得的OS/2。“OS/2”是国际商用机器公司的商标。诸如Java之类的面向对象编程***可以和该操作***联合运行,向操作***提供采用Java程序或在数据处理***200上执行的应用程序的调用。“Java”是Sun Microsystems公司的商标。用于该操作***,面向对象的操作***的指令和应用程序被置于诸如硬盘驱动器226的存储装置中,它们可以载入主存储器204中供处理器202执行。
本领域的普通技术人员将认识到,图2里的硬件可以根据实施方案而变化。其它内部硬件或者***设备,比如闪速ROM(或等效的非易失存储器)或光盘驱动器,可以和图2所描写的硬件一起使用,或取代之。另外,本发明的各过程可以应用到多处理器数据处理***中。
例如,数据处理***200在选择性配置成网络计算机的情况下,可以不包括SCSI主机总线适配器212,硬盘驱动器226,磁带机228和CD-ROM驱动器230。在该情况下,该计算机,恰当地讲是客户机,必须包括几种网络通讯接口,比如LAN适配器210,调制解调器222,或者此类装置。另一个例子是,数据处理***200可以是独立型的***,它的配置应当是无论数据处理***200是否包括某些类型的网络通信接口都可自举,而不必依赖于某些类型的网络通信接口。更进一步的例子是,数据处理***200可以是个人数字助理(PDA)装置,它配置有只读存储器和/或闪速ROM,以便提供储存操作***文件和/或用户生成的数据所需要的非易失性存储器。
数据处理***200的其它例子包括供在因特网和万维网进行冲浪用的因特网信息设备。因特网信息设备可以包括基于Web的交互式电视置顶盒在内。图2所描写的例子和上述例子并不意味着体系结构上的任何限制。
现在参看图3,它阐明了在可以实现本发明的计算机***内操作的各软件成分之间的关系。基于Java的***300包括为在特定的硬件平台上执行的软件提供硬件和***支持的特定平台操作***302。Java虚拟机(JVM)304是可以结合操作***执行的一个软件应用程序。JVM304为Java运行期环境提供执行Java应用程序或Java小程序306的能力,小程序306是以Java程序设计语言编写的程序,服务小程序或软件成分。JVM 304工作于其中的计算机***可以和上文所描述的数据处理***200或计算机100相似。不过,JVM304可以以专用硬件的形式实现在所谓的Java芯片,硅载Java,或嵌入有picojava内核芯片的Java处理器上。
本发明提供用于动态可调的可配置废料收集程序的方法和***。所以,本发明结合Java虚拟机工作在由Java标准的所定义的JVM边界内。为了适当地阐述本发明,在此对根据Java标准的Java虚拟机的一部分操作进行说明。
在Java运行期环境的中心是JVM,它支持Java环境的各个方面,包括其结构,安全特性,跨网络的迁移性和平***立性。
JVM是虚拟计算机,即抽象指定的计算机。该规范定义每个JVM都必须实现的一些特性,但是其设计具有一定范围的选择性,视供JVM执行于其上的平台而定。例如,全部JVM都必须执行Java字节码,它可以用一定范围的技术来执行字节码所表示的指令。JVM可以按软件方式实现,或者稍有些硬件。这一灵活性允许为主机计算机和PDA设计不同的JVM。
JVM必须装载类文件,并执行其中的字节码。Java虚拟机包括一个类装入程序,该程序装载来自某个应用程序的类文件和来自该应用程序所需要的Java应用程序编程接口(API)。执行字节码的执行引擎可以视平台和实现方案而改变。
最简单类型的基于软件的执行引擎是适时编译器。采用这种执行方式,某一方法的字节码在该方法的第一次调用时被编译为本地机器码。然后,该方法的本地机器代码被高速缓存,并在对该方法的下一次调用时被再次使用。另外,执行引擎可以用硬件实现,并嵌入在芯片上,这样,Java字节码得以本地执行。JVM通常解释字节码,但是,JVM也可以用诸如适时编译的其它技术来执行字节码。
当应用程序在以软件实现于平台特有的操作***上的JVM上被执行的时候,Java应用程序可以采取调用本地方法的方式与主机操作***交互作用。Java运行期环境可以有两种方法:Java和本地。Java方法用Java语言编写,编译为字节码,并被储存在类文件中。本地方法以Java或其它的一些语言编写,并编译为特定处理器的本地机器代码。本地方法被储存在其准确形式是平台专有的动态连接库内。
现在参看图4,这是按照本发明的优选实施例的Java虚拟机的方框图。Java虚拟机(JVM)400包括类装入程序子***402,这是装载类型,比如类和界面的机制,如果给定完全符合的名字的话。JVM 400也包括运行期数据区404,执行引擎406,本地方法接口408和存储器管理424。执行引擎406是用来执行包含在由类装入程序子***402装载的类的方法中的指令的机制。执行引擎406可以是例如Java解释程序412或适时编译程序410。本地的方法接口408允许对潜在的操作***中的资源进行访问。本地的方法接口408可以是例如Java本地接口。
运行期数据区404包括本地方法堆栈414,Java堆栈416,PC寄存器418,方法区420和堆422。这些不同的数据区表示JVM400为了执行程序所需要的存储区组织形式。
Java堆栈416被用来储存Java方法调用的状态。当新的线程被启动的时候,JVM为该线程制作新的Java堆栈。JVM仅仅为Java堆栈直接施行两个操作:它使帧进栈和出栈。线程的Java堆栈储存的是Java方法对线程调用的状态。Java方法调用的状态包括其局域变量,调用它所采用的参数,其返回值(如果有的话),和中间的计算结果。Java堆栈由堆栈结构组成。堆栈结构包括一次Java方法调用的状态。当线程调用某一方法的时候,JVM把新结构推进该线程的Java堆栈中。当该方法完成的时候,JVM将用于该方法的结构出栈,并且丢弃它。JVM没有可用于保持中间值的任何寄存器;任何要求或者产生中间值的Java指令都采用堆栈来保持中间值。这样,Java指令集充分考虑了各种平台结构。
PC寄存器418被用来显示下一个被执行的指令。每个被例示的线程都有着其自身的pc寄存器(程序计数器)和Java堆栈。如果线程正在执行JVM方法,那么pc寄存器的值表示拟执行的下一个指令。如果线程正在执行本地方法,那么pc寄存器的内容未定义。
本地的方法堆414储存对本地方法调用的状态。本地方法调用的状态以实现相关的方式被储存在本地的方法堆栈,寄存器或其它的实现相关的存储区中。
方法区420包括类数据,而堆422包括所有的例示对象。JVM标准严格定义了数据类型和操作。数据类型可以分为一组原语类型和参考类型。参考值指的是对象,但是原语值是实际的数据。
全部JVM都有一个方法区和一个堆,它们都由在JVM内部运行的全部线程共享。当JVM装载类文件的时候,它根据包含在类文件中的二进制数据解析有关类型的信息。它将该类型信息放入方法区中。每当类例子或数组被产生,则从堆422为新的对象分配存储区。JVM 400包括把存储器内的存储区空间分配给堆422的指令,但是不包括释放在存储区器的该空间的指令。所描写例子里的存储区管理424管理在存储器内为堆420而分配的存储区空间。存储区管理424可以包括自动收回不再被应用程序引用的对象所使用的存储区的废料收集程序426。另外,废料收集程序也可以移动对象以减少堆碎片化现象。
现在参看图5,它是有关在实现本发明的数据处理***中的软件成分和数据文件之间的数据流的方框图。操作***特有的平台500包括Java虚拟机502,它和在图3中在上文所描述的JVM 304相似。JVM502还有着和在图4所述的堆422和本地方法接口408相似的存储堆504和Java本地接口508。
JVM 502也包括提供一些存储区管理,比如废料收集和存储区解除分配之类的动态废料收集程序506。动态的废料收集程序506和图4废料收集程序426的不同点在于,动态的废料收集程序506可以从位于JVM502外面的运行期环境动态地接收配置参数。在最通常的例子中,用户输入512设置环境变量510,该变量然后被动态的废料收集程序506读取或接收。例如,在DOS操作***中,用户可以在“autoexec.bat”文件内设置环境变量,而这些变量在运行期环境中可以用于各种应用程序。在这种情况下,用户可以为动态废料收集程序特别设置环境变量,而后废料收集程序监视这些运行期环境以查看那些环境变量的改变,或者采取某类动作以接收那些环境变量的更新值。在另一个例子中,微软视窗操作***提供可以被用来设置各种应用程序的环境变量的注册文件。
在又一个例子中,配置文件可以被用来储存专用在动态废料收集程序506中的环境变量。然后,动态的废料收集程序506可以解析配置文件,以获得供其执行的配置参数。动态的废料收集程序506可以不使用介入软件而直接读配置文件。在Java运行期环境中,值可以被储存在和Java应用程序关联的特性文件中。
尽管动态的废料收集程序506可以包括供直接的用户交互所使用的模块,但是可以预期动态废料收集程序506以非交互的方式执行。JVM502可以提供轻量应用程序或Java小程序,它接受用户输入512,并设置JVM 502内的可传送到动态的废料收集程序506或被其取回的变量。这类安排允许动态废料收集程序506主要由径直用于存储区管理功能的代码组成。动态的废料收集程序506可以接收配置参数的更新值的另一方法是采用动态废料收集程序506和Java本地接口508之间的交互操作。在这种情况下,Java本地接口508可以包括那个与操作***特定的平台500进行交互的代码,以便接收有关环境变量变化的通知,或者监视环境变量的改变。然后动态废料收集程序506可以从Java本地接口508接收或者取回环境变量的更新值。下文将以更多的细节进一步描述接收和取回环境变量值的特定方法。
动态废料收集程序可以接收在此被轮流称做环境变量,控制变量,行为参数等等的动态的值的一种方法是扩展JVM内的***类。通过在该类上添加允许Java应用程序调用动态废料收集程序的应用编程接口(API)的方法,一个应用程序可以将外部值传送到废料收集程序中。例如,一个被叫做“System.setGCProperties()”的方法可以被用来设置废料收集程序的行为特性。
现在参看图6,这是一个描述了设置和储存拟在动态废料收集程序内使用的环境变量的过程的流程图。过程从在操作***执行应用程序以及执行***功能(步602)开始。然后确定用户是否输入了设置环境变量的指令(步604)。如果是,则操作***储存环境变量的新值在适当的地点中,以便后续传送给动态废料收集程序(步606)。用户可以通过图形用户界面和指令线路接口输入设置环境变量的指令。
如果用户没有输入指令,那么确定是否有新的硬件被安装(步骤608)。如果是,操作***可以确定有关新硬件的类型和位置的参数,并在操作***的范围内修改适当的环境变量(步骤610)。然后操作***可以继续其它的功能。如果没有安装新的硬件,那么操作***执行其它的***功能(步骤612)。然后确定计算机***是否正被关闭(步骤614)。如果没有,过程返回步骤602,核查其它的***功能和任务。如果***正被关断,则过程完成。这样,图6的步骤描述了在执行操作***内基本上无中断的环路。在对环境变量作出改变之后,操作***在其正常的行动过程中储存用于环境变量的新值。
现在参看图7,它是动态废料收集程序借以配置其本身以适应在其当前执行环境中的正确更新程序的过程的流程图。在该过程开始的时候,废料收集程序试图确定接收结构变量或参数的动态更新值的必要方法(步骤702)。一般地,这类过程在最初执行动态废料收集程序的时候由诸如Java虚拟机的操作***执行。
确定动态废料收集程序是否能够自动检测更新的环境变量(步骤704)。如果是,动态的废料收集程序设置自动检测标记,以定期自动核查对环境或配置参数所作的更新(步骤706)。这类自动检测可以通过软件中断等等的使用而进行。然后,初始化过程完成。
如果动态的废料收集程序能自动检测更新了的环境变量,那么接着确定操作***是否支持将环境变量的每次更新报告给动态废料收集程序(步骤708)。如果是,确定操作***是否支持回调注册(步骤712)。如果是,那么动态废料收集程序为操作***内的各回调注册一个更新例程(步骤716)。然后,过程完成。如果操作***不支持回调注册,动态废料收集程序对有关环境变量更新的通知进行注册(步骤714)。动态废料收集程序可以用消息,事件或一些触发废料收集程序的软件中断的形式接收这些通知,以便取回环境变量的更新值。然后,过程完成。
如果操作***没有为每次更新提供通知支持,那么动态废料收集程序设置周期检测标记,以便周期性取回环境变量并在其后将其和所需要环境变量的先前存储值进行比较(步骤710)。然后,过程完成,这时废料收集程序可以继续初始化过程,或者可以进入非活动状态,等待来自操作***的适当行动。
现在参看图8,这是废料收集程序借以接收环境变量的更新值以便动态配置废料收集程序的流程图。过程开始时动态废料收集程序根据计算环境或平台确定检查或取回环境变量的方法(步骤802)。确定用于得到环境变量的适当方法的过程可以和用图7所示的过程相似。在确定该方法之后,动态废料收集程序进入非活动状态,等候软件中断或其它类型的激活(步骤804)。确定是否废料收集程序应该被激活(步骤806)。如果不,则废料收集程序停留在非活动状态。如果是,废料收集程序根据其预定的方法得到环境变量的新值(步骤808)。
图8描写的是动态废料收集程序借以得到环境变量新值的三种方法。例如,动态的废料收集程序可以在周期性核对期间取回新值(步骤810)。这类执行可以在动态废料收集程序预先确定它负责监视一组环境变量以便检测在一组环境变量内一或多个控制变量或参数的更新的时候进行。根据这一实现方案,环境变量的值可以在操作***特有平台文件内,或者如果动态废料收集程序被实现为Java虚拟机的一部分,控制变量的值可以放置在Java虚拟机内。或者,动态的废料收集程序可以是Java虚拟机里存储区管理的一部分,并且必要的控制变量可以存储在操作***专用平台文件内。动态的废料收集程序取回更新的变量或参数的新值,并储存新值以供在动态废料收集程序内选择或修改行为算法用。
一个替代方法是,动态废料收集程序可以接收通知废料收集程序环境变量已经被更新的更新消息,并且动态的废料收集程序从适当地点取回环境变量的新值(步骤812)。在动态的废料收集程序对控制变量或参数的更新的通知进行注册但是还依靠其它的一些***功能来检测对该控制变量或参数的更新情况的时候情况是这样。动态的废料收集程序可以接收更新消息内的更新值,或者可以在接收更新消息时从适当地点取回新值。不论在哪一种情况下,动态的废料收集程序然后都可以根据更新的控制变量或环境变量的值选择,或者修改适当的行为算法。
在动态的废料收集程序可以得到新值的方式的又一个例子中,动态废料收集程序内的例程可以被调用,使得例程可以取回新值(步骤814)。这可以发生在动态废料收集程序已经注册了拟为通知控制变量或环境变量的更新而被调用的例程的时候。在这种情况下,动态废料收集程序依靠***功能,通过硬件配置,用户输入等等监视或检测环境变量的更新。
如果动态的废料收集程序已经实现作为Java虚拟机的一部分,那么例程可以注册为挂钩(异常分支指令)。挂钩是一个回调例程,该例程由***注册,这样,它可以得到关于事件发生的通知。这类机制允许一个例程将其自身***到和该事件关联的控制流中。如果根据事件该例程要求了某一类型的行动,那么例程可以执行一些功能,并返还控制给例程被调用的那一点。否则,如果不需要行动,那么例程仅仅将控制返还回例程的调用者。这样,例程提供允许***在必要的时候“回调”例程的“挂钩”。
不论哪种方法被用于得到环境变量的新值,动态废料收集程序都可以储存用于确定和修改动态废料收集程序内的适当行为算法的新值(步骤816)。然后,确定动态废料收集程序是否应该返回非活动状态(步骤818)。如果是,那么动态废料收集程序返回非活动状态(步骤804)。如果不是,那么过程在获得新控制变量值方面的工作完成。
现在参看图9,这是描写按照本发明动态废料收集程序赖以操作的过程的流程图。过程开始时,操作***初始化对废料收集程序的执行(步骤902)。动态的废料收集程序可以根据在配置文件中的环境变量或值选择适当的行为算法,或者可以根据环境变量所表示的参数修改行为算法(步骤904)。然后动态废料收集程序使用所选择或者修改的行为算法来释放,或者解分配存储区(步骤906)。一旦废料收集程序完成其存储区管理功能,动态废料收集程序返回不活跃的状态一段时间,直到操作***重新初始化其执行为止(步骤908)。
图9描述当执行动态废料收集程序的操作***确定需要存储区管理功能的时候,该操作***的递归过程。动态废料收集程序根据已经采用通过各种方法得到的环境变量或参数而选择和/或修改的行为算法执行这些存储区管理功能。得到这些变量的方法分别在图4-8中阐述。图5显示了几类数据流,通过这些数据流动态废料收集程序可以接收或者得到动态设置废料收集程序的行为算法的数据。图6显示操作***通过用户输入或***配置结构协助存储环境变量的例子。图7表示的是操作***如何提供运行期支持以便把更新值动态传递给废料收集程序,这样,废料收集程序不需要为重构目的而被暂停。图8显示无需对废料收集程序采用***性的重构过程即可使废料收集程序可以接收环境变量和参数的更新值的办法。
现在参看图10A-10B,这些图表描写了能使废料收集程序动态选择预定义的配置结构的设置组合。图10A表示的是当被称作为GC_MACHINE_TYPE的环境变量1002具有值SERVER(服务器)的时候可以被使用的表1000。在时间的某一点,被叫做GC_MACHINE_TYPE的环境变量已经设置,从而匹配废料收集程序正在其上执行的计算平台的类型。在这种情况下,废料收集程序正在其配置结构可以改变的服务器(SERVER)上执行。表1000用一个尺度来表示存储区1006的大小和处理器1004的速度。根据SERVER的配置,表1000的各条目描述的是被动态废料收集程序使用的行为算法的参数。当存储器的大小增加时,行为算法所用参数的值减少。当SERVER有256兆位的存储器的时候,动态废料收集程序在它执行其存储区管理功能的时候采取主动性的行为。
当SERVER有2 GB存储器的时候,行为算法参数已经被设置,这样,动态废料收集程序采取执行存储区管理功能的迟缓方式。用类似的方法,当SERVER的处理器速度变化的时候,动态废料收集程序所表达的行为特性也可以有所变化。例如,当服务器有2 GB的存储器和133MHz的处理器速度的时候,动态废料收集程序可以采取迟缓的行为。不过,当服务器有2 GB的存储器和750 MHz的处理器速度的时候,动态的废料收集程序可以采取主动性的行为。在该例子中,当存储区的大小增加时,***管理者在确定SERVER内的存储器较大从而允许动态废料收集程序采取更迟缓的行为之后,可能已经选择了环境变量或配置参数。另一方面,***管理者可能已经确定了更快速的处理器速度将允许动态废料收集程序更经常地执行存储区管理功能,而不会影响SERVER的全面性能。因此,***管理者可以设置环境变量,使得动态废料收集程序以更快速的速度采取更具主动性的行为。
图10B表示的是当环境变量GC_MACHINE_TYPE 1052的值为HANDHELD(手持)的时候所配置的表1050。在这种情况下,指定动态废料收集程序拟在其上执行的计算平台类型的环境变量被设置,使得废料收集程序可以得知它正在PDA或其它类型的HANDHELD计算装置上执行。在这种情况下,表1050有一个尺度用于存储器1056的大小,另一个尺度则用于可选择的目的1054。存储器的大小按照结合图10A所阐述的相似方式标定动态废料收集程序的行为。
不过,在图10B中,用户使用手持装置的目的已经通过适当的用户输入装置被选出。然后可以采用作可选目的使用的用户输入,对表进行索引,从而选择动态的废料收集程序的适当行为。例如,如果用户使手持装置配置了8兆位的存储器并且主要将手持装置用于诸如接收和发送电子信件的通信目的,那么动态废料收集程序可以有迟缓的行为。如果用户主要使用手持装置作数据存储目的,比如保留日历信息和其它类型的文件,那么动态废料收集程序可以采取适度的行为。如果手持装置的用户将手持装置的目的选择为一般的使用范畴,则该表可以指示动态废料收集程序对其存储区管理功能采取主动性的行为。用于一般使用目的的主动性行为可以在各种不能预先为人所知的境况下使动态废料收集程序采取最高效率的操作。
在图10A-10B所示的表中,可以预期动态废料收集程序内的行为算法的各设定值,比如迟缓,适度,和主动性,为行为算法在动态废料收集程序内的操作提供总的方向。不过,表中用于特定计算平台的每个条目都可以由一组在动态废料收集程序的行为算法内使用的参数构成。换句话说,表中的每个条目都可以有指明废料收集程序操作的方式的某个特征。例如,每个条目都可以有规定废料收集程序的存储区管理行动的频度的暂存值。
“迟缓的”行为-“主动性的”行为的描述符描述的是与动态废料收集程序的处理的时间方面相关的一系列动作或动作谱。大部分***设计的最优先目标是使性能最大化,同时将对***其它部分的辅助影响减少到最小。废料收集程序的各个过程可以由特定时间间隔内的行动数加以量化,并且量化器“迟缓”和“主动性”尝试捕获废料收集程序和一定时间间隔内的过程有关联的任何方面或特性。例如,迟缓行为可以理解为意指,和废料收集有关的开销应该保持在最低限度,并且废料收集程序应当仅仅在绝对必要的时候,比如可以利用的存储器数量变得较低时才工作。主动性的行为可以被认为是和废料收集有关联的开销应该相对忽略。在这种配置中,废料收集程序应该比较经常地运作,甚至是在处理器已经有较重的处理负荷的情况中。需要注意的一个重点是动态废料收集程序有一定的用户化行为范围,它是可量化的某些特征。
另一个参数可以规定每次废料收集程序被激活时废料收集程序可以消费的处理器时间量。另一个参数可以规定每次执行废料收集程序时存储区或存储块中拟被废料收集程序检查的对象数。换句话说,一个参数可以设定废料收集程序每500毫秒被激活一次。但是,如果装置配置有更多的存储器,那么对应的参数可以被增加,从而废料收集程序以1000毫秒的频率执行。如果平台装置有更快的处理器速度,那么废料收集程序在对其存储区管理功能的每次启动时可以允许执行较长的时间。在那种情况下,可以确定废料收集程序应该进行更长周期的处理,因为更快的处理器速度可以允许其它并列执行的应用以较短的时间量执行。
该表条目内的另一个参数可以规定,当存储器数较小的时候,存储器里的全部对象都应该由废料收集程序核查以便解除分配,而当存储器数量较大时,可以核查存放在存储器内的较小数量的对象。这样,动态废料收集程序内的算法的迟缓行为-主动性行为可以由为动态废料收集程序的操作提供可测量的特性的其它参数构成。然后,这些设置使用户或***管理者能够对动态的废料收集程序设定低,适度或者高的性能。或者,起拨动开关作用的环境变量可以允许用户启动和关停废料收集程序的存储区管理动作。在这种情况下,调试应用程序的***开发者能根据对软件错误的考虑删除动态废料收集程序的动作。
其它的环境变量和参数可以被用来设置动态废料收集程序的特性。除图10B表示的可选目的外,一个参数可以允许对实时数据处理作出说明。除了安装在设置有动态废料收集程序的数据处理***里的存储器大小和处理器的时钟速度(如图10A所示)以外,一个参数还可以指定安装在数据处理***里的处理器数量。可以通过表示数据处理***机器型号的变量指定的其它计算平台,除图10A-10B所示的服务器(SERVER)和手持(HANDHELD)计算机外,还可以包括工作站,台式电脑,笔记本计算机,嵌入式计算机或巨型计算机。
其它的运行期考虑事项可以被用来设置供动态废料收集程序用的适当环境变量。特定类型软件应用程序的安装可以规定对于一或多种已安装的应用程序应当遵循特定的废料收集程序行动。例如,如果特定的已安装应用程序要求能够得到的空闲存储区大小应尽可能大,那么无论这是否招致性能降低,环境变量都可以如此设置,使得动态废料收集程序总是展现出主动性的行为。不过,进一步的修改并非如在安装了特定类型的应用程序的时候总是展现主动性的行为那样,而是动态废料收集程序仅仅在这类应用程序在执行的时候才可以采取主动性的行为策略。然后,动态废料收集程序将在如此的应用程序不在执行的时候展现更稳健的行为策略。
另一个运行期环境的考虑事项是,***管理者可以对特定应用程序列出时间表,以便在一天的特定时刻或一星期中的某天执行。在这种情况下,能够配置动态废料收集程序,使得它按指定的时间表采取特定的行为策略。这样,然后用户或***管理者能根据将被放到数据处理***上的处理负载来改变行为策略。例如,如果***管理者知道某些需要大量存储空间的薪水支付名簿程序或财会的应用程序将在一星期的某个时间执行,那么可以设置废料收集程序的行为策略,使之对应于该特定的处理负载。或者,***管理者可以建立和应用程序有关联的特性文件,以便对于应用程序被执行的每次情况将动态废料收集程序的行为和应用程序的运行期简表(profile)匹配。
本发明提供的优点在考虑到上文提供的详细说明书应该一目了然。可以给废料收集程序提供单一代码库,使得单一的废料收集程序在可以配置于各种计算平台上的操作***内提供多样化的性能和行为特性。动态废料收集程序可以基于多样化算法,计算平台参数等等,有效地进行表驱动。这允许废料收集程序展现与在所部署的数据处理***中的存储器大小和处理器数量有关的可伸缩性。当动态废料收集程序被实现在Java虚拟机内的时候,单一的动态废料收集程序可以在各种计算平台中使用,在所述计算平台中应当先期需要Java虚拟机的全然不同的各种例子,以便得到所需要的性能。
重要的是应注意到尽管在上文结合充分起作用的数据处理***对本发明进行了描述,但是本领域的普通技术人员将意识到本发明的各个过程能够以指令的计算机可读介质和各种形式分发,以及本发明同等适用,而不管实际用于实施分发操作的信号载送介质具体是何种类型。计算机可读介质的例子包括可读类型介质,比如软磁盘,硬盘驱动器,RAM和CD-ROM,以及传输类型介质,比如数字和模拟通信链路。
上文对本发明的说明仅仅是出于举例和说明目的,而不是意在穷尽本发明,或者将本发明限制在所披露的形式内。许多的修改和变化对本领域的普通技术人员是一目了然的。实施例的选择和相关说明是为了最佳解释本发明的原理,实际应用,并使本领域的普通技术人员能够理解对本发明各种实施例所作的满足所预期特定用途的各种修改。

Claims (46)

1.在数据处理***中管理存储器的方法,所述方法包括下列的计算机实现的步骤:
读取包括用于废料收集程序的配置参数的配置文件;并且,
在数据处理***中执行的废料收集程序根据基于该配置参数的行为算法管理对存储器的解分配。
2.如权利要求书1所述的方法,其特征在于配置参数选择一组废料收集算法中的一个算法。
3.如权利要求书1所述的方法,其特征在于进一步包括:
以多个废料收集模式中的一个模式操作废料收集程序;并且
通过设置在配置文件中的配置参数,动态在各废料收集模式之间切换。
4.如权利要求书1所述的方法,其特征在于数据处理***包括Java运行期环境。
5.在数据处理***中管理存储器的方法,所述方法包括计算机实现的下列步骤:
动态设置控制变量;并且
在数据处理***中执行的废料收集程序根据基于该控制变量的行为算法管理对存储器的解除分配。
6.如权利要求书5所述的方法,其特征在于还包括:
监视数据处理***的一组环境变量;
检测在该组环境变量内控制变量的更新情况;
由废料收集程序取回更新后的控制变量的值;
根据更新后空制变量的值选择行为算法。
7.如权利要求书5所述的方法,其特征在于还包括:
注册拟被通知以用于数据处理***的控制变量的更新情况的例程;
检测用于数据处理***的控制变量的更新情况;
调用所注册的例程;以及
根据更新后的控制变量的值选择行为算法。
8.如权利要求书5所述的方法,其特征在于还包括:
注册关于一个控制变量的更新情况的通知;检测该控制变量的更新情况;
发送关于该控制变量的更新情况的通知;以及
根据更新后的控制变量的值选择行为算法。
9.如权利要求书5所述的方法,其特征在于控制变量存储在一个操作***注册文件中。
10.如权利要求书5所述的方法,其特征在于控制变量以一个操作***环境变量的形式存储。
11.如权利要求书5所述的方法,其特征在于所述例程注册为挂钩。
12.如权利要求书5所述的方法,其特征在于控制变量由该数据处理***的用户动态设置。
13.如权利要求书5所述的方法,其特征在于控制变量由用户通过指令线接口调用该控制变量的更新情况而动态设置。
14.如权利要求书5所述的方法,其特征在于控制变量代表数据处理***的从下列组别中选出的一或多个特征:
安装在数据处理***中的存储器的大小;
安装在数据处理***中的处理器数;
安装在数据处理***中的处理器的时钟速度;
数据处理***的机型,其中机型代表服务器,工作站,台式计算机,笔记本计算机,手持计算机,或嵌入式计算机;
用于数据处理***的可选目的,其中可选目的代表实时数据处理,数据存储管理,通信管理或一般用途;
安装的应用程序;
安装的应用程序组合;
执行应用程序;
执行应用程序的组合;
一天的当前时间;
一周的当前日期;以及
数据处理***的处理负载。
15.如权利要求书14所述的方法,其特征在于行为算法的性能是在对数据处理***的各特征的数值进行加权的情况下计算的。
16.如权利要求书14所述的方法,其特征在于行为算法的类型由数据处理***的特征表选定。
17.如权利要求书5所述的方法,其特征在于行为算法支配从下列组中选出的一或多个特征:
存储器管理动作的频率;
存储器管理动作所使用的处理器时间量;以及
存储器中拟被废料收集程序核查的对象数;
18.如权利要求书5所述的方法,其特征在于控制变量选择用于行为算法的性能的一组离散值之一。
19.如权利要求书18所述的方法,其特征在于所述离散值组包括低、中等或高性能。
20.如权利要求书5所述的方法,其特征在于控制变量将废料收集程序的管理动作接通和/或关断。
21.如权利要求书5所述的方法,其特征在于控制变量选择用于废料收集程序的行为算法的类型。
22.如权利要求书5所述的方法,其特征在于废料收集程序在Java虚拟机中进行操作。
23.计算机可读介质中的用于在数据处理***中管理存储器的计算机程序产品,所述计算机程序产品包括:
动态设置控制变量的第一指令;和,
在数据处理***中执行的废料收集程序根据基于该控制变量的行为算法管理对存储器的解除分配的第二指令。
24.如权利要求书23所述的计算机程序产品,其特征在于还包括:
监视数据处理***的一组环境变量的指令;
检测在该组环境变量内控制变量的更新情况的指令;
由废料收集程序取回更新后的控制变量的值的指令;
根据更新后空制变量的值选择行为算法的指令。
25.如权利要求书23所述的计算机程序产品,其特征在于还包括:
注册指令,用于注册拟被调用从而通知以用于数据处理***的控制变量的更新情况的例程;
检测用于数据处理***的控制变量的更新情况的指令;
调用所注册的例程的指令;以及
根据更新后的控制变量的值选择行为算法的指令。
26.如权利要求书23所述的计算机程序产品,其特征在于还包括:
注册关于该控制变量的一次更新情况的通知的指令;
检测该控制变量的更新情况的指令;
发送关于该控制变量的更新情况的通知的指令;以及
根据更新后的控制变量的值选择行为算法的指令。
27.如权利要求书23所述的计算机程序产品,其特征在于控制变量存储在一个操作***注册文件中。
28.如权利要求书23所述的计算机程序产品,其特征在于控制变量以操作***环境变量的形式存储。
29.如权利要求书25所述的计算机程序产品,其特征在于所述例程注册为挂钩。
30.如权利要求书23所述的计算机程序产品,其特征在于控制变量由该数据处理***的用户动态设置。
31.如权利要求书23所述的计算机程序产品,其特征在于控制变量由用户通过指令线接口调用该控制变量的更新情况而动态设置。
32.如权利要求书23所述的计算机程序产品,其特征在于控制变量代表数据处理***的从下列组别中选出的一或多个特征:
安装在数据处理***中的存储器的大小;
安装在数据处理***中的处理器数;
安装在数据处理***中的处理器的时钟速度;
数据处理***的机型,其中机型代表服务器,工作站,台式计算机,笔记本计算机,手持计算机,或嵌入式计算机;
用于数据处理***的可选目的,其中可选目的代表实时数据处理,数据存储管理,通信管理或一般用途;
安装的应用程序;
安装的应用程序的组合;
执行应用程序;
执行应用程序的组合;
一天的当前时间;
一周的当前日期;以及
数据处理***的处理负载。
33.如权利要求书32所述的计算机程序产品,其特征在于行为算法的性能是在对数据处理***的各特征的数值进行加权的情况下计算的。
34.如权利要求书32所述的计算机程序产品,其特征在于行为算法的类型由数据处理***的特征表选定。
35.如权利要求书23所述的计算机程序产品,其特征在于行为算法支配从下列组中选出的一或多个特征:
存储器管理动作的频率;
存储器管理动作所使用的处理器时间量;以及
存储器中拟被废料收集程序核查的对象数;
36.如权利要求书23所述的计算机程序产品,其特征在于控制变量选择用于行为算法的性能的一组离散值之一。
37.如权利要求书36所述的计算机程序产品,其特征在于所述离散值组包括低、中等或高性能。
38.如权利要求书23所述的计算机程序产品,其特征在于控制变量将废料收集程序的管理动作接通和/或关断。
39.如权利要求书23所述的计算机程序产品,其特征在于控制变量选择用于废料收集程序的行为算法的类型。
40.如权利要求书23所述的计算机程序产品,其特征在于废料收集程序在Java虚拟机中进行操作。
41.计算机可读介质中的用于在数据处理***中管理存储器的计算机程序产品,所述计算机程序产品包括:
动态设置控制变量的第一指令;和,
用于废料收集程序的第二指令,它具有根据该控制变量的在数据处理***中的第一行为和在第二计算机***上的根据该控制变量的第二行为。
42.数据处理***,用于在该数据处理***中管理存储器,所述数据处理***包括:
动态设置控制变量的设置装置;和
在数据处理***中执行的废料收集程序根据基于该控制变量的行为算法,来管理对存储器的解除分配的管理装置。
43.如权利要求书42所述的数据处理***,其特征在于还包括:
监视数据处理***的一组环境变量的的监视装置;
检测在该组环境变量内控制变量的更新情况的检测装置;
由废料收集程序取回更新后的控制变量的值的取回装置;
根据更新后控制变量的值选择行为算法的选择装置。
44.如权利要求书42所述的数据处理***,其特征在于控制变量选择用于行为算法的性能的一组离散值之一。
45.如权利要求书42所述的数据处理***,其特征在于控制变量选择用于废料收集程序的行为算法的类型。
46.如权利要求书42所述的数据处理***,其特征在于废料收集程序在Java虚拟机中进行操作。
CN00118852.6A 1999-06-30 2000-06-15 可动态调节而且可配置的废料收集程序用的方法和*** Expired - Lifetime CN1201249C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/343,356 US6629113B1 (en) 1999-06-30 1999-06-30 Method and system for dynamically adjustable and configurable garbage collector
US09/343,356 1999-06-30
US09/343356 1999-06-30

Publications (2)

Publication Number Publication Date
CN1290897A true CN1290897A (zh) 2001-04-11
CN1201249C CN1201249C (zh) 2005-05-11

Family

ID=23345787

Family Applications (1)

Application Number Title Priority Date Filing Date
CN00118852.6A Expired - Lifetime CN1201249C (zh) 1999-06-30 2000-06-15 可动态调节而且可配置的废料收集程序用的方法和***

Country Status (2)

Country Link
US (1) US6629113B1 (zh)
CN (1) CN1201249C (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008043197A1 (en) * 2006-09-26 2008-04-17 Intel Corporation Dynamically changing a garbage collector in a managed runtime system
CN100440830C (zh) * 2004-04-13 2008-12-03 中国科学院计算技术研究所 一种基于网络的计算环境可动态重构的***及其方法
CN112463648A (zh) * 2019-09-09 2021-03-09 美光科技公司 经动态调整废料收集工作量
CN112650695A (zh) * 2020-12-30 2021-04-13 北京奇艺世纪科技有限公司 一种应用服务器的缓存管理方法及装置
WO2021114902A1 (zh) * 2020-06-05 2021-06-17 平安科技(深圳)有限公司 程序初始化方法、程序初始化装置、终端设备及存储介质

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6314566B1 (en) * 1998-09-29 2001-11-06 Apple Computer, Inc. Method and apparatus for “Just-in-Time” dynamic loading and unloading of computer software libraries
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6854114B1 (en) * 1999-10-21 2005-02-08 Oracle International Corp. Using a virtual machine instance as the basic unit of user execution in a server environment
WO2001042909A2 (en) * 1999-12-08 2001-06-14 Sun Microsystems, Inc. Technique for configuring network deliverable components
US7073033B2 (en) 2000-02-25 2006-07-04 Oracle International Corporation Memory model for a run-time environment
US7024668B2 (en) 2000-05-15 2006-04-04 Matsushita Electric Industrial Co., Ltd. Application execution apparatus and method
US6957237B1 (en) * 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
US6934755B1 (en) 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
US7013455B1 (en) * 2000-10-19 2006-03-14 International Business Machines Corporation System for automatically altering environment variable to run proper executable file by removing references to all except one duplicate file in the path sequence
EP1359505B1 (en) * 2000-12-11 2005-11-02 Matsushita Electric Industrial Co., Ltd. A memory management apparatus and method
US20030101439A1 (en) * 2001-11-29 2003-05-29 Giuseppe Desoli System and method for supporting emulation of a computer system through dynamic code caching and transformation
US6985976B1 (en) * 2002-02-22 2006-01-10 Teja Technologies, Inc. System, method, and computer program product for memory management for defining class lists and node lists for allocation and deallocation of memory blocks
US7155509B1 (en) * 2002-02-26 2006-12-26 Bellsouth Intellectual Property Corp. System and method for reliably purging a fault server
JP2003330732A (ja) * 2002-05-17 2003-11-21 Canon Inc 画像形成装置、制御方法、制御プログラム
US7577951B2 (en) * 2002-05-30 2009-08-18 Hewlett-Packard Development Company, L.P. Performance of computer programs while they are running
US7174354B2 (en) * 2002-07-31 2007-02-06 Bea Systems, Inc. System and method for garbage collection in a computer system, which uses reinforcement learning to adjust the allocation of memory space, calculate a reward, and use the reward to determine further actions to be taken on the memory space
DE60318993T2 (de) * 2003-06-19 2009-01-29 Texas Instruments Inc., Dallas Eingebettete Speicherbereinigung
US7472144B2 (en) * 2003-07-28 2008-12-30 International Business Machines Corporation Method and system for resolving memory leaks and releasing obsolete resources from user session data
US7529786B2 (en) * 2003-07-30 2009-05-05 Bea Systems, Inc. System and method for adaptive garbage collection in a virtual machine environment
CN1867883A (zh) * 2003-10-13 2006-11-22 皇家飞利浦电子股份有限公司 按应用程序进行存储分配
US7590803B2 (en) * 2004-09-23 2009-09-15 Sap Ag Cache eviction
US7412691B2 (en) * 2004-12-27 2008-08-12 International Business Machines Corporation Dynamic configuration files
US8713524B2 (en) * 2005-04-06 2014-04-29 Microsoft Corporation Memory management configuration
KR100690804B1 (ko) * 2005-06-13 2007-03-09 엘지전자 주식회사 휴대단말기의 메모리 정리 방법
US7441094B2 (en) * 2005-07-05 2008-10-21 Microsoft Corporation Memory management configuration
US8701095B2 (en) * 2005-07-25 2014-04-15 Microsoft Corporation Add/remove memory pressure per object
US7676511B2 (en) * 2006-01-27 2010-03-09 Sun Microsystems, Inc. Method and apparatus for reducing object pre-tenuring overhead in a generational garbage collector
US9027011B1 (en) * 2006-08-31 2015-05-05 Oracle America, Inc. Using method-profiling to dynamically tune a virtual machine for responsiveness
US8949555B1 (en) * 2007-08-30 2015-02-03 Virident Systems, Inc. Methods for sustained read and write performance with non-volatile memory
US8185914B2 (en) 2006-12-21 2012-05-22 International Business Machines Corporation User-configurable variables
US20080281887A1 (en) * 2007-05-10 2008-11-13 Nokia Corporation Application specific garbage collection system
US8880775B2 (en) * 2008-06-20 2014-11-04 Seagate Technology Llc System and method of garbage collection in a memory device
US8266612B2 (en) * 2008-10-03 2012-09-11 Microsoft Corporation Dynamic, customizable and configurable notification mechanism
US20100318584A1 (en) * 2009-06-13 2010-12-16 Microsoft Corporation Distributed Cache Availability During Garbage Collection
JP2011107746A (ja) * 2009-11-12 2011-06-02 Hitachi Ltd メモリ管理方法、計算機システム及びプログラム
FR2961922B1 (fr) 2010-06-29 2013-12-13 Flexycore Procede de compilation selective, dispositif et produit programme d'ordinateur correspondant.
US8943260B2 (en) * 2011-03-13 2015-01-27 International Business Machines Corporation Dynamic memory management in a virtualized computing environment
US8489651B2 (en) 2011-03-25 2013-07-16 Microsoft Corporation Reconstruction of garbage collection information
WO2013140435A1 (en) * 2012-03-19 2013-09-26 Hitachi, Ltd. Data storage system comprising non-volatile semiconductor storage device, and storage control method
US8819382B2 (en) * 2012-08-09 2014-08-26 Apple Inc. Split heap garbage collection
GB2511325A (en) 2013-02-28 2014-09-03 Ibm Cache allocation in a computerized system
US9245558B1 (en) 2014-05-09 2016-01-26 Western Digital Technologies, Inc. Electronic system with data management mechanism and method of operation thereof
US9710379B2 (en) 2015-02-27 2017-07-18 International Business Machines Corporation Tuning utilization and heap memory size for real-time garbage collection
US9747250B2 (en) 2015-03-25 2017-08-29 International Business Machines Corporation Effective memory management for host objects in a runtime environment with embedded garbage-collected based dynamic language
CN112367206B (zh) * 2020-11-12 2021-10-22 珠海格力电器股份有限公司 配置数据处理方法、装置和***

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02213960A (ja) 1989-02-14 1990-08-27 Hitachi Ltd キャッシュメモリ
US5734861A (en) 1995-12-12 1998-03-31 International Business Machines Corporation Log-structured disk array with garbage collection regrouping of tracks to preserve seek affinity
US5784553A (en) 1996-01-16 1998-07-21 Parasoft Corporation Method and system for generating a computer program test suite using dynamic symbolic execution of JAVA programs
US5832529A (en) * 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US5787431A (en) 1996-12-16 1998-07-28 Borland International, Inc. Database development system with methods for java-string reference lookups of column names
US5848423A (en) 1997-04-23 1998-12-08 Sun Microsystems, Inc. Garbage collection system and method for locating root set pointers in method activation records
US5845298A (en) 1997-04-23 1998-12-01 Sun Microsystems, Inc. Write barrier system and method for trapping garbage collection page boundary crossing pointer stores
US5842016A (en) 1997-05-29 1998-11-24 Microsoft Corporation Thread synchronization in a garbage-collected system using execution barriers
US5857210A (en) 1997-06-26 1999-01-05 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including read and write barriers associated with an instance of a partially relocated object
US6539396B1 (en) * 1999-08-31 2003-03-25 Accenture Llp Multi-object identifier system and method for information service pattern environment
US6529909B1 (en) * 1999-08-31 2003-03-04 Accenture Llp Method for translating an object attribute converter in an information services patterns environment

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100440830C (zh) * 2004-04-13 2008-12-03 中国科学院计算技术研究所 一种基于网络的计算环境可动态重构的***及其方法
WO2008043197A1 (en) * 2006-09-26 2008-04-17 Intel Corporation Dynamically changing a garbage collector in a managed runtime system
CN112463648A (zh) * 2019-09-09 2021-03-09 美光科技公司 经动态调整废料收集工作量
WO2021114902A1 (zh) * 2020-06-05 2021-06-17 平安科技(深圳)有限公司 程序初始化方法、程序初始化装置、终端设备及存储介质
CN112650695A (zh) * 2020-12-30 2021-04-13 北京奇艺世纪科技有限公司 一种应用服务器的缓存管理方法及装置
CN112650695B (zh) * 2020-12-30 2023-09-05 北京奇艺世纪科技有限公司 一种应用服务器的缓存管理方法及装置

Also Published As

Publication number Publication date
US6629113B1 (en) 2003-09-30
CN1201249C (zh) 2005-05-11

Similar Documents

Publication Publication Date Title
CN1201249C (zh) 可动态调节而且可配置的废料收集程序用的方法和***
US7127709B2 (en) System and method for jointly managing dynamically generated code and data
US6526570B1 (en) File portability techniques
US7765527B2 (en) Per thread buffering for storing profiling data
US7409694B2 (en) Highly componentized system architecture with loadable virtual memory manager
CN1119756C (zh) 用于进行静态初始化的方法和***
US8434099B2 (en) Efficient linking and loading for late binding and platform retargeting
CN1906580B (zh) 对于具有可移动对象的启用网格的虚拟机的方法和***
US6728963B1 (en) Highly componentized system architecture with a loadable interprocess communication manager
US20050226406A1 (en) Efficient linking and loading for late binding and platform retargeting
EP0945797A2 (en) Method and apparatus for object-oriented interrupt system
US20040243997A1 (en) Method, system, and program for installing program components on a computer
US20050149686A1 (en) Method and apparatus for dynamic incremental defragmentation of memory
US20060101453A1 (en) Deploying Java applications in resource constrained environments
US6701520B1 (en) Preventing garbage collection of objects in object oriented computer programming languages
CN1514354A (zh) 面向构件基于***内核的进程池/线程池管理方法
CN1636190A (zh) 对多体系组件软件的***管理模式加载程序和执行机制
CN101777006A (zh) 优化虚拟机环境中的应用程序接口的方法和装置
CN1961292A (zh) 用于受管运行时环境的线程同步方法和装置
CN101206573A (zh) 维护软件组件的***和方法
US20070061793A1 (en) Method, system and computer program product for optimizing software program execution during class loading phase
US20090133042A1 (en) Efficient linking and loading for late binding and platform retargeting
US20070234325A1 (en) Methods and apparatus to tune intermediate representations in a managed runtime environment
WO2008043197A1 (en) Dynamically changing a garbage collector in a managed runtime system
CN102096598A (zh) 一种虚拟机***及其实现方法

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20050511

CX01 Expiry of patent term