CN1402847A - 把无用方法收集到垃圾箱中的方法 - Google Patents

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

Info

Publication number
CN1402847A
CN1402847A CN00816416A CN00816416A CN1402847A CN 1402847 A CN1402847 A CN 1402847A CN 00816416 A CN00816416 A CN 00816416A CN 00816416 A CN00816416 A CN 00816416A CN 1402847 A CN1402847 A CN 1402847A
Authority
CN
China
Prior art keywords
program
methods
garbage collection
thread
upgrading
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
CN00816416A
Other languages
English (en)
Other versions
CN100382047C (zh
Inventor
乔基姆·达尔斯泰特
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.)
Oracle International Corp
Original Assignee
Appeal Virtual Machines AB
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 Appeal Virtual Machines AB filed Critical Appeal Virtual Machines AB
Publication of CN1402847A publication Critical patent/CN1402847A/zh
Application granted granted Critical
Publication of CN100382047C publication Critical patent/CN100382047C/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
    • 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

Abstract

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

Description

把无用方法收集到垃圾箱中的方法
本发明涉及一种提高数据处理应用程序的有效性的方法。
更准确地说,本发明涉及提高虚拟机中的数据处理速率,尤其与Java程序语言有关。
虽然下面主要针对Java程序语言描述本发明,但是,本发明不限于Java程序语言,而是可以与许多程序语言一起应用。
本方法打算用在程序的自适应优化上。在自适应优化中,当运行程序时,重构程序和优化程序的各个不同部分。运行的程序越长,所需的存储空间就越大,因此,提高数据处理能力的一般性问题在于迅速创建新的存储场地。
Java和其它动态程序语言包括自动存储器管理。这意味着程序员无需关心存储器已经使用的那些部分。虚拟机有时进行所谓的垃圾收集(garbagecollection),大体上指的是虚拟机扫描整个存储器,找出哪些对象还存储在存储器中和哪些对象程序不再访问。归还存储器的这些部分供以后使用。
Java还包括有关所谓线程管理方法的方法。因此,Java包含了支持或模拟两个或更多个程序的同时处理的系统。线程管理可以分成两个部分。一个部分涉及到以控制方式构造不同线程的方式。另一个部分涉及到哪些线程将被运行和哪些线程将是被动的和等待着被运行。
为了进一步提高有效性和让程序清理占用的存储空间,仅仅根据各个对象来优化存储器是不够的。
本发明解决了这个问题。
因此,本发明涉及当使用虚拟机时,提高数据处理应用程序的有效性的方法,其中所述程序包括许多个方法,即许多个程序段,它们都存储在所用计算机的存储器中,和其中所述程序利用了垃圾收集过程,其中这种新发明的方法的特征在于,在第1步骤中,根据由此所需的方法分析所有所谓的线程堆栈(thread stack);在第2步骤中,使所需方法的每一个都得到更新,其中,正在调用更新以前的方法被调用更新后的方法所取代;和在第3步骤中,删除所有未更新的方法,其中,由所述程序清理相应的存储空间。
现在参照如附图所示的本发明示范性实施例,在一定程度上比较详细地描述本发明,在附图中:
图1是方块图;
图2显示了旧方法;和
图3显示了根据本发明更新的方法。
图1显示了Java虚拟机JVM,无论操作系统是WinNT、LINUX、Solaris、还是一些其它系统,这种虚拟机JVM都可以用于运行不同的数据程序1、2、3。如上所述,尽管Java程序语言是非常流行的程序语言,但是,本发明不限于这种语言,而是可以应用于所有面向对象的和与平台无关的相应程序语言。
因此,本发明涉及当使用虚拟机时,提高数据处理应用程序的有效性的方法,其中,该程序包括许多个方法,即许多个程序段,它们都存储在所用计算机的存储器中,和其中,该程序利用了垃圾收集进程。
大家知道,垃圾箱收集各个对象,随之删除当前不再使用的对象,从而使相应的存储空间得到清理。
在大多数系统中,许多方法,即许多程序段,被使用一次或数次,或者这些方法在很短的时间内得到应用,然后就不再被使用了。
在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 (4)

1.一种在使用虚拟机时提高数据处理应用程序的有效性的方法,其中该程序包括许多个方法,即许多个程序段,它们都存储在所用计算机的存储器中,和其中该程序利用了垃圾收集过程,其特征在于,在第1步骤中,根据由此所需的方法分析所有所谓的线程堆栈;在第2步骤中,使所述所需方法的每一个都得到更新,其中,正在调用更新以前的方法被调用更新后的方法所取代;和在第3步骤中,删除所有未更新的方法,和由该程序清理相应的存储空间。
2.根据权利要求1所述的方法,其特征在于,当程序正在运行时,一次让一个线程停止;把用于停止线程的方法转移到一个列表中,和此后,重新启动线程;更新和存储所述列表中的方法;在按照所述方式处理完所有线程之后,使所有线程同时停止;删除没有被更新的所有方法,和用更新的方法重新启动所有线程。
3.根据权利要求1或2所述的方法,其特征在于,当利用锁定机制时,在所述第1步骤之前的步骤中识别最有效的锁定机制;和更新利用如此确定的锁定机制的那些方法。
4.根据权利要求1、2或3所述的方法,其特征在于,当利用不同的垃圾收集算法时,在所述第1步骤之前的步骤中确定各个对象的分配和寿命,然后,识别最有效的垃圾收集算法;更新构成所需垃圾收集算法的方法;和删除其余的垃圾收集算法。
CNB008164169A 1999-10-28 2000-10-27 把无用方法收集到垃圾箱中的方法和系统 Expired - Lifetime CN100382047C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
SE99038903 1999-10-28
SE9903890A SE514318C2 (sv) 1999-10-28 1999-10-28 Förfarande för att effektivisera en databehandlingsprocess vid användning av en virtuell maskin och där ett skräpsamlingsförfarande används

Publications (2)

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

Family

ID=20417516

Family Applications (1)

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

Country Status (11)

Country Link
US (2) US7194494B1 (zh)
EP (1) EP1240589B1 (zh)
JP (1) JP4150518B2 (zh)
KR (1) KR20020070270A (zh)
CN (1) CN100382047C (zh)
AT (1) ATE402443T1 (zh)
AU (1) AU768181B2 (zh)
CA (1) CA2389168C (zh)
DE (1) DE60039628D1 (zh)
SE (1) SE514318C2 (zh)
WO (1) WO2001031455A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100437515C (zh) * 2003-06-30 2008-11-26 松下电器产业株式会社 垃圾收集系统

Families Citing this family (6)

* 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 プログラム変換方法、プログラムおよび記憶媒体
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
US10175998B2 (en) * 2016-07-31 2019-01-08 Oracle International Corporation Container-based language runtime loading an isolated method
CN114265670B (zh) * 2022-03-02 2022-09-23 阿里云计算有限公司 一种内存块整理方法、介质及计算设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4797810A (en) * 1986-06-26 1989-01-10 Texas Instruments Incorporated Incremental, multi-area, generational, copying garbage collector for use in a virtual address space
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
US5293614A (en) * 1991-04-08 1994-03-08 Texas Instruments Incorporated System and method for hard real-time garbage collection requiring a write barrier but no read barrier
US5355483A (en) * 1991-07-18 1994-10-11 Next Computers Asynchronous garbage collection
DE69332696T2 (de) * 1992-06-15 2003-08-21 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
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
ATE239253T1 (de) * 1997-12-19 2003-05-15 Microsoft Corp Inkrementeller freispeichersammler
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100437515C (zh) * 2003-06-30 2008-11-26 松下电器产业株式会社 垃圾收集系统

Also Published As

Publication number Publication date
AU1563201A (en) 2001-05-08
EP1240589B1 (en) 2008-07-23
DE60039628D1 (de) 2008-09-04
ATE402443T1 (de) 2008-08-15
WO2001031455A1 (en) 2001-05-03
CN100382047C (zh) 2008-04-16
SE9903890D0 (sv) 1999-10-28
CA2389168A1 (en) 2001-05-03
KR20020070270A (ko) 2002-09-05
CA2389168C (en) 2009-10-06
US7194494B1 (en) 2007-03-20
US20070073794A1 (en) 2007-03-29
SE9903890L (sv) 2001-02-12
JP2003513356A (ja) 2003-04-08
AU768181B2 (en) 2003-12-04
EP1240589A1 (en) 2002-09-18
JP4150518B2 (ja) 2008-09-17
SE514318C2 (sv) 2001-02-12

Similar Documents

Publication Publication Date Title
JP5052512B2 (ja) 仮想マシン環境における予測可能な結果のガベージコレクションのためのシステム及び方法
EP1080411B1 (en) Memory reclamation method
US6571260B1 (en) Memory reclamation method
KR100541174B1 (ko) 로컬화된 메모리 재이용을 가진 데이터 처리기
CN100338583C (zh) 自动进行存储器泄露检测和补救的系统和方法
US6393439B1 (en) Stored data object marking for garbage collectors
CN100468336C (zh) 基于优先权的代码高速缓存管理
WO2002054249A1 (en) Methods and apparatus for optimizing garbage collection
WO2002054235A2 (en) Methods and apparatus for enabling local java object allocation and collection
US7472144B2 (en) Method and system for resolving memory leaks and releasing obsolete resources from user session data
US20180285251A1 (en) Managing memory in a computer system
US8255436B2 (en) Per thread garbage collection
CN1402847A (zh) 把无用方法收集到垃圾箱中的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 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 patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20060818

Address after: American California

Applicant after: Bea Systems Corp.

Address before: Stockholm

Applicant before: BEA systems Stockholm Engineering Co

C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: ORACLE INT CORP

Free format text: FORMER OWNER: BEA SYSTEMS CORP.

Effective date: 20110831

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20110831

Address after: American California

Patentee after: Oracle Int Corp

Address before: California, USA

Patentee before: Bea Systems Corp.

CX01 Expiry of patent term

Granted publication date: 20080416

CX01 Expiry of patent term