New! View global litigation for patent families

CN100382047C - 把无用方法收集到垃圾箱中的方法和系统 - Google Patents

把无用方法收集到垃圾箱中的方法和系统 Download PDF

Info

Publication number
CN100382047C
CN100382047C CN 00816416 CN00816416A CN100382047C CN 100382047 C CN100382047 C CN 100382047C CN 00816416 CN00816416 CN 00816416 CN 00816416 A CN00816416 A CN 00816416A CN 100382047 C CN100382047 C CN 100382047C
Authority
CN
Grant status
Grant
Patent type
Prior art keywords
method
system
garbage
collection
unused
Prior art date
Application number
CN 00816416
Other languages
English (en)
Other versions
CN1402847A (zh )
Inventor
乔基姆·达尔斯泰特
Original Assignee
Bea系统公司
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
Grant date

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL 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

Abstract

一种在使用虚拟机时提高数据处理应用程序的有效性的方法,其中该程序包括许多个方法,即许多个程序段,它们都存储在所用计算机的存储器中,和其中该程序利用了垃圾收集过程。该发明的特征在于,在第1步骤中,分析所有线程堆栈,以确定哪些方法是所述线程堆栈需要的方法;在第2步骤中,更新每一个需要的方法,其中正在调用更新以前的方法被调用更新后的方法所取代;在第3步骤中,删除所有未更新的方法并释放由所述未更新的方法所占用的存储空间。

Description

把无用方法收集到垃圾箱中的方法和系统技术领域本发明涉及一种提高数据处理应用程序的有效性的方法和系统。更准确地说,本发明涉及提高虛拟机中的数据处理速率,尤其与Java程 序i吾言有关。背景技术虽然下面主要针对Java程序语言描述本发明,但是,本发明不限于Java 程序语言,而是可以与许多程序语言一起应用。本方法打算用在程序的自适应优化上。在自适应优化中,当运行程序时, 重构程序和优化程序的各个不同部分。运行的程序越长,所需的存储空间就 越大,因此,提高数据处理能力的一般性问题在于迅速创建新的存储场地。Java和其它动态程序语言包括自动存储器管理。这意味着程序员无需关 心存储器已经使用的那些部分。虚拟机有时进行所谓的垃圾收集(garbage collection),大体上指的是虚拟机扫描整个存储器,找出哪些对象还存储在存 储器中和哪些对象程序不再访问。归还存储器的这些部分供以后使用。Java还包括有关所谓线程管理方法的方法。因此,Java包含了支持或模 拟两个或更多个程序的同时处理的系统。线程管理可以分成两个部分。 一个 部分涉及到以控制方式构造不同线程的方式。另一个部分涉及到哪些线程将 被运行和哪些线程将是被动的和等待着被运行。为了进一步提高有效性和让程序清理占用的存储空间,仅仅根据各个对 象来优化存储器是不够的。发明内容本发明解决了这个问题。因此,本发明涉及一种在使用虚拟机时提高数据处理应用程序的有效性 的方法,其中该程序包括许多个方法,它们都存储在所用计算机的存储器中, 和其中该程序利用了垃圾收集过程,其特征在于,在第1步骤中,分析所有

线程堆栈,以确定哪些方法被所述线程使用;在第2步骤中,通过创建每个' 所述使用的方法的拷贝,更新每个所述使用的方法,其中,正在调用更新以前的方法被调用更新后的方法所取代;和在第3步骤中,删除所有旧的方法 并释放由所述旧的方法所占用的存储空间;其中在所述第l步骤中,当程序 正在运行时,让线程一次一个地被暂停;传输由所述暂停的线程使用的方法 到一列表;重新开始被暂停的线程;在所述第2步骤中,更新和存储所述列 表中的方法;在所述第3步骤中,当所有线程的第1和第2步骤的处理完成 时,让所有线程同时停止;以及删除所有旧的方法,并用更新的方法重新开 始这些线程。本发明还提供一种用于对计算机或虚拟机的存储空间内的方法的分布进 行优化的方法,包括步骤:分析所有线程堆栈,以便确定哪个方法被线程使 用;通过创建每个所述使用的方法的拷贝,对每个所述使用的方法进行更新, 并以对所更新的方法的调用来替换对每一个使用的方法的调用;以及删除所 有旧的方法,并释放由这些旧的方法占用的存储空间;其中,所述分析步骤 包括如下子步骤:对所有线程当程序正在运行时, 一次一个地暂停每一个线 程,传输被暂停的线程使用的方法到一更新列表,和重新开始被暂停的线程;新列表中的方法;以及其中所述删除步骤包括如下子步骤:当所有线程的处 理完成时同时停止所有线程,删除所有旧的方法,和用更新的方法重新开始 所述线程。附图说明现在参照如附图所示的本发明示范性实施例,在一定程度上比较详细地 描述本发明,在附图中: 图1是方块图; 图2显示了旧方法;和 图3显示了根据本发明更新的方法。具体实施方式图1显示了 Java虚拟机JVM,无论操作系统是WinNT、 LINUX、 Solaris、 还是一些其它系统,这种虚拟机JVM都可以用于运行不同的数据程序1、 2、 3。如上所述,尽管Java程序语言是非常流行的程序语言,但是,本发明不 限于这种语言,而是可以应用于所有面向对象的和与平台无关的相应程序语5 。因此,本发明涉及当使用虚拟机时,提高数据处理应用程序的有效性的 方法,其中,该程序包括许多个方法,即许多个程序段,它们都存储在所用 计算机的存储器中,和其中,该程序利用了垃圾收集进程。大家知道,垃圾箱收集各个对象,随之删除当前不再使用的对象,从而 使相应的存储空间得到清理。在大多数系统中,许多方法,即许多程序段,被使用一次或数次,或者 这些方法在很短的时间内得到应用,然后就不再被使用了 。在Java和相应程序的情况中,装入新方法之后,旧方法就再也没有用了 。下的旧方法就再也没有用了。当优化锁定机构选择和垃圾收集选择时,有必要用新机构取代使用旧机 构的所有已使用过的方法。根据本发明,在新发明的方法的第1步骤中,根据所需的各个方法分析 所有所谓的线程堆栈。在第2步骤中,更新所需方法的每一个,其中,正在 对所述更新以前的方法的调用被对更新方法的调用所取代。在第3步骤中, 删除所有未更新的方法,和由所述程序清理相应的存储空间。这个过程不仅的确清除了不使用的方法,而且致使已经更新的那些方法 得到重排,以便把方法的调用直接指向更新的方法,而不是通过不再使用的 旧方法来进行。这显示在图2和3中,其中图2显示了旧方法,和图3显示了所用的更 新方法。在图2中显示了三个方法foo、 apa和bar。 foo从存储器地址4711 开始,apa^人地址4714开始,和bar从地址4720开始。线程堆栈的分析表明,只有方法foo和bar被使用,因此,foo和bar不 再引用方法apa。把方法foo和bar更新成图3所示的那些方法。在这种情况中,方法foo 和bar精确地重建起来,尽管不同之处在于,各个方法获得了新地址,和此 时,foo对bar的调用指向新的bar地址4903 。删除了所有旧方法,即图2中的方法,以前被这些方法占用的存储空间

也空出来供未来使用。当进行对象的垃圾收集时, 一般来说,在进行垃圾收集的时候,程序停 止运行。在垃圾收集和删除了不再使用的对象之后,程序重新启动运行。当应用本发明时可以使用这样的方法。但是,最好用如下的方法来取代。当实施新发明的方法时,在程序正在运行的时候停止一个线程,与此同 时,把用于停止线程的方法转移到一个列表中,然后,重新启动该线程。接 着,更新和存储该列表中的方法。在按照这种方式处理完所有线程之后,使 所有线程同时停止,即,以便更新与所关心的线程相关的所有已用方法。删 除没有被更新的所有方法,和用更新方法重新启动所有线程。由于更新是断断续续进行的,这种方法避免了停止运行程序的需要。如上所述,在Java和相应的语言中利用了锁定机构。可以选择不同的锁 定机构。重要的是,选择在避免与另一个线程同时访问给定对象的多于一个 的线程的出现方面最为有效的锁定机构。同步问题出现在几个线程想要访问同 一 个对象或资源的时候。为了在 Java程序语言中解决这个问题,每个线程尽力达到资源锁定。可以以各种各 样的方式利用资源锁定机构。不同锁定机构的有效性取决于线程如何致力于 获得同步资源。根据优选实施例,当利用锁定机构时,在所述第1步骤之前的步骤中识 别最有效的锁定机构,和更新利用如此确定的锁定机构的方法。至于垃圾收集算法,也需要加以选择。许多面向对象的语言都利用垃圾 收集。这意味着,程序员无需明确地告诉系统不再需要某个对象了。系统负 责这种检测,和收回被对象占用的存储器部分。为了有效实现这种检测和收 回,已经提出了许多不同的算法。已经证明,不同的算法最好适合于不同的 应用程序。选择最适合于正在运行的应用程序的垃圾收集算法对于取得与所 关心的程序有关的最大执行速率是非常有意义的。根据本发明的另一个优选实施例,当利用不同的垃圾收集算法时,在所 述第1步骤之前的步骤中确定各个对象的分配和寿命,此后,使最有效的垃 圾收集算法得到识别,和更新构成所需垃圾收集算法的方法,然后删除其余 的垃圾收集算法。优选实施例的应用提供了优化代码、线程和存储器管理的高效方法,其

中, 一般特征在于方法的识别和更新,以便不把无用方法装入系统中。

Claims (13)

1.一种在使用虚拟机时提高数据处理应用程序的有效性的方法,其中该程序包括许多个方法,它们都存储在所用计算机的存储器中,和其中该程序利用了垃圾收集过程,其特征在于, 在第1步骤中,分析所有线程堆栈,以确定哪些方法被所述线程使用; 在第2步骤中,通过创建每个所述使用的方法的拷贝,更新每个所述使用的方法,其中,正在调用更新以前的方法被调用更新后的方法所取代;和 在第3步骤中,删除所有旧的方法并释放由所述旧的方法所占用的存储空间; 其中在所述第1步骤中,当程序正在运行时,让线程一次一个地被暂停;传输由所述暂停的线程使用的方法到一列表;重新开始被暂停的线程; 在所述第2步骤中,更新和存储所述列表中的方法; 在所述第3步骤中,当所有线程的第1和第2步骤的处理完成时,让所有线程同时停止;以及 删除所有旧的方法,并用更新的方法重新开始这些线程。
2. 根据权利要求1所述的方法,其中,所述虚拟机是Java虛拟机。
3. 根据权利要求1或2所述的方法,在使用锁定机构时,包括步骤: 在所述第l分析步骤之前,识别最优锁定机构;以及 在所述更新步骤中,对使用所识对的锁定机构的那些方法进行更新。
4. 根据权利要求1或2所述的方法,在使用不同的垃圾收集算法时,包 括步骤:在所述分析步骤之前,确定各个程序对象的分配和寿命;以及识别最优 垃圾收集算法;在所述更新步骤中,对构成所识别的垃圾收集算法的方法进行更新;以及在所述删除步骤中,删除其余的垃圾收集算法。
5. 根据权利要求3所述的方法,在使用不同的垃圾收集算法时,包括步骤:在所述分析步骤之前,确定各个程序对象的分配和寿命;以及识别最优 垃圾收集算法; 在所述更新步骤中,更新构成所识别的垃圾收集算法的方法;以及在所述删除步骤中,删除其余的垃圾收集算法。
6. —种用于对计算机或虚拟机的存储空间内的方法的分布进行优化的方 法,包括步骤:分析所有线程堆栈,以便确定哪个方法被线程使用; 通过创建每个所述使用的方法的拷贝,对每个所述使用的方法进行更新, 并以对所更新的方法的调用来替换对每一个使用的方法的调用;以及 删除所有旧的方法,并释放由这些旧的方法占用的存储空间; 其中,所述分析步骤包括如下子步骤:对所有线程 当程序正在运行时, 一次一个地暂停每一个线程, 传输被暂停的线程使用的方法到一更新列表,和 重新开始被暂停的线程; 并且其中所述更新每个所述使用的方法的步骤包括步骤: 更新并存储所述更新列表中的方法;以及 其中所述删除步骤包括如下子步骤:当所有线程的处理完成时同时停止所有线程,删除所有旧的方法,和用更新的方法重新开始所述线程。
7. 根据权利要求6所述的用于优化计算机或虚拟机的存储空间中的方法 的分布的方法,在使用锁定机构时,包括步骤:在所述第l分析步骤之前,识别最优锁定机构;以及 在所述更新步骤中,对使用所识别的锁定机构的那些方法进行更新。
8. 根据权利要求6所述的用于优化计算机或虚拟机的存储空间中的方法 的分布的方法,在使用不同的垃圾收集算法时,包括步骤:在所述分析步骤之前,确定使用的对象的分配和寿命,以及识别最优垃 圾收集算法;在所述更新步骤中,还对构成所识别的垃圾收集算法的方法进行更新;以及在所述删除步骤中,删除其余的垃圾收集算法。
9. 根据权利要求7所述的用于优化计算机或虛拟机的存储空间中的方法 的分布的方法,在使用不同的垃圾收集算法时,包括步骤: -在所述分析步骤之前,确定使用的对象的分配和寿命,以及识别最优垃圾收集算法;在所述更新步骤中,还对构成所识别的垃圾收集算法的方法进行更新;以及在所述删除步骤中,删除其余垃圾收集算法。
10. —种用于对计算机或虚拟机的存储空间中的方法进行重排的方法, 其中所述虚拟机包括一个或多个线程,包括步骤:在所述虛拟机的存储空间中原始分布的方法中,确定对要被更新的所述 方法的选择,其中所述确定步骤包括分析线程堆栈以确定当前所述线程需要 的那些方法;创建更新的方法,并以对所述更新的方法的调用替换对选择的每一个方 法的调用,其中所述创建更新的方法的步骤包括一次停止所述线程一个并在 备用存储器地址再创建所述停止的线程所需方法的拷贝;以及删除原始的方法,并释放由删除的方法占用的存储空间的部分。
11. 一种对计算机或虚拟机中的存储空间中的方法进行重排的方法,包 括步骤:在所述存储空间中原始存在的方法中,确定要保留的所述方法的子集, 所述确定步骤包括分析线程以确定当前所述线程需要的那些方法;创建要保留的方法子集的拷贝,并将对子集中的每个原始方法的调用修 改为对那个方法的新的拷贝的调用;以及
12. —种优化计算机或虚拟机的存储空间中的方法分布的方法,包括步骤:从多个原始方法选择一组将要更新的方法;更新所述组的方法,包括创建从所述要更新的组拷贝的新的方法组,并 以对所述新的方法组的相应调用代替对原始方法组的调用;和删除在多个原始方法中的所有方法,并释放由删除的方法占用的存储空分。
13. 根据权利要求12所述的方法,还包括步骤: 在更新所述方法之前停止所述线程,和在所述方法被更新后重新开始所述线程。
CN 00816416 1999-10-28 2000-10-27 把无用方法收集到垃圾箱中的方法和系统 CN100382047C (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
SE9903890 1999-10-28
SE9903890-3 1999-10-28

Publications (2)

Publication Number Publication Date
CN1402847A true CN1402847A (zh) 2003-03-12
CN100382047C true CN100382047C (zh) 2008-04-16

Family

ID=20417516

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 00816416 CN100382047C (zh) 1999-10-28 2000-10-27 把无用方法收集到垃圾箱中的方法和系统

Country Status (7)

Country Link
US (2) US7194494B1 (zh)
EP (1) EP1240589B1 (zh)
JP (1) JP4150518B2 (zh)
CN (1) CN100382047C (zh)
CA (1) CA2389168C (zh)
DE (1) DE60039628D1 (zh)
WO (1) WO2001031455A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005018425A (ja) * 2003-06-26 2005-01-20 Matsushita Electric Ind Co Ltd プログラム変換方法、プログラムおよび記憶媒体
US7395285B2 (en) 2003-06-30 2008-07-01 Matsushita Electric Industrial Co., Ltd. Garbage collection system
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
DE102007026693A1 (de) 2007-06-08 2008-12-11 Robert Bosch Gmbh Verfahren und Vorrichtung zum Umorganisieren von Daten in einem Speichersystem, insbesondere für Steuergeräte in Kraftfahrzeugen
CA2700217C (en) * 2010-04-01 2011-07-19 Ibm Canada Limited - Ibm Canada Limitee Write barrier elision for reference arrays

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5088036A (en) 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
US5355483A (en) * 1991-07-18 1994-10-11 Next Computers Asynchronous garbage collection
DE69332696D1 (de) * 1992-06-15 2003-03-27 Microsoft Corp Rechnerverfahren und System zur Speicherverwaltung
US5692193A (en) * 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
US6463581B1 (en) * 1996-10-03 2002-10-08 International Business Machines Corporation Method for determining reachable methods in object-oriented applications that use class libraries
US6041179A (en) * 1996-10-03 2000-03-21 International Business Machines Corporation Object oriented dispatch optimization
US5915255A (en) * 1997-04-23 1999-06-22 Sun Microsystems, Inc. Method and apparatus for referencing nodes using links
EP1049979B1 (en) * 1997-12-19 2003-05-02 Microsoft Corporation Incremental garbage collection
US6654951B1 (en) * 1998-12-14 2003-11-25 International Business Machines Corporation Removal of unreachable methods in object-oriented applications based on program interface analysis

Also Published As

Publication number Publication date Type
CA2389168A1 (en) 2001-05-03 application
US7194494B1 (en) 2007-03-20 grant
DE60039628D1 (de) 2008-09-04 grant
JP2003513356A (ja) 2003-04-08 application
EP1240589B1 (en) 2008-07-23 grant
WO2001031455A1 (en) 2001-05-03 application
CN1402847A (zh) 2003-03-12 application
US20070073794A1 (en) 2007-03-29 application
EP1240589A1 (en) 2002-09-18 application
JP4150518B2 (ja) 2008-09-17 grant
CA2389168C (en) 2009-10-06 grant

Similar Documents

Publication Publication Date Title
US5404521A (en) Opportunistic task threading in a shared-memory, multi-processor computer system
US6449626B1 (en) Reduced-cost remembered-set processing in a train-algorithm-based garbage collector
Von Behren et al. Capriccio: scalable threads for internet services
US5274809A (en) Task execution control method for a multiprocessor system with enhanced post/wait procedure
US5313647A (en) Digital data processor with improved checkpointing and forking
US6065019A (en) Method and apparatus for allocating and freeing storage utilizing multiple tiers of storage organization
US6754736B1 (en) Information processing apparatus, data inputting/outputting method, and program storage medium therefor
US6353838B2 (en) Incremental garbage collection
US7035884B2 (en) Placement of allocation trains in the train algorithm
US6185581B1 (en) Train-algorithm-based garbage collector employing fixed-size remembered sets
US5524247A (en) System for scheduling programming units to a resource based on status variables indicating a lock or lock-wait state thereof
US6272674B1 (en) Method and apparatus for loading a Java application program
US5948113A (en) System and method for centrally handling runtime errors
US6820101B2 (en) Methods and apparatus for optimizing garbage collection using separate heaps of memory for storing local objects and non-local objects
US5960436A (en) Transaction compaction for replay of transactions from client to server
US6282700B1 (en) Mechanism for maintaining revisions of objects in flash memory
US6415302B1 (en) Train-algorithm-based garbage collector employing farthest-forward-car indicator
US6202208B1 (en) Patching environment for modifying a Java virtual machine and method
US6434577B1 (en) Scalable-remembered-set garbage collection
US6757890B1 (en) Methods and apparatus for enabling local Java object allocation and collection
US5960446A (en) Parallel file system and method with allocation map
US20020194421A1 (en) Computer system with multiple heaps and heap reset facility
US20060212496A1 (en) System and method for quiescing select data modification operations against an object of a database during one or more structural operations
US6032216A (en) Parallel file system with method using tokens for locking modes
US6115782A (en) Method and apparatus for locating nodes in a carded heap using a card marking structure and a node advance value

Legal Events

Date Code Title Description
C06 Publication
ASS Succession or assignment of patent right

Owner name: BEA SYSTEM CO.,LTD.

Free format text: FORMER OWNER: BEA SYSTEM STOCKHOLM ENGINEERING CO., LTD.

Effective date: 20060818

C41 Transfer of the right of patent application or the patent right
C14 Granted
C41 Transfer of the right of patent application or the patent right
ASS Succession or assignment of patent right

Owner name: ORACLE INT CORP

Free format text: FORMER OWNER: BEA SYSTEMS CORP.

Effective date: 20110831