WO2000041079A2 - Arrangement for executing program code with reduced memory requirements - Google Patents
Arrangement for executing program code with reduced memory requirements Download PDFInfo
- Publication number
- WO2000041079A2 WO2000041079A2 PCT/EP1999/010301 EP9910301W WO0041079A2 WO 2000041079 A2 WO2000041079 A2 WO 2000041079A2 EP 9910301 W EP9910301 W EP 9910301W WO 0041079 A2 WO0041079 A2 WO 0041079A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- definition
- memory
- entities
- compπses
- objects
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Definitions
- the present invention relates to an arrangement for executing program code, said arrangement comp ⁇ ses definition loading means for loading at least two definition entities into memory, said definition entities being associated with said definition loading means, the arrangement further comp ⁇ ses object creating means for creating objects according to said definition entity
- the present invention is also related to a method for executing program code and a tangible medium carrying a computer program for performing a method for executing program code.
- Java is a platform which comp ⁇ ses the Java language which is compiled to a byte code which runs on a Java Virtual Machine.
- the use of a byte code which runs on a virtual machine has the advantage that the compiled byte code can be executed on every combination of hardware and operating system if a virtual machine exist for such combination
- the Java language is object o ⁇ ented, which means that du ⁇ ng the execution of the programs objects are created according to a definition entity, which can be a class or an interface in the Java language. Before objects can be created, the needed definition entities (classes or interfaces) have to be loaded first in memory. This loading is done by the definition loading means, which are called class loaders in the Java language. There can exist different definition loading means for different ways of loading definition entities. In Java there can e.g. be different class loaders for loading classes from disk, from a TCP/IP based network or loading them from an MPEG-2 Transport stream
- the Java virtual machine has a memory management system which performs garbage collection to delete automatically objects and classes that are not needed anymore.
- garbage collection When Java is to be used in consumer appliances such as TV's and set-top boxes, only limited amounts of memory resources are available. Currently the use of Java for consumer applications is quite difficult due to that limited amount of memory available
- the object of the present invention is to provide an arrangement according to the preamble in which the required amount of memory is decreased.
- the arrangement according to the invention is characte ⁇ zed in that the arrangement comp ⁇ ses memory management means for removing from memory definition entities having no related objects, said definition loading means being associated with definition entities still having related objects.
- the invention is based on the recognition that in the present specification of the Java virtual machine it is presc ⁇ bed that a definition entity may only be deleted if its definition loading means is not reachable anymore. This means that no objects exist anymore of which the definition entity has been loaded by said definition loading means.
- classes may be unloaded as soon they are not needed anymore.
- An embodiment of the present invention is characte ⁇ zed in that the arrangement comp ⁇ ses designation means for designating definition entities as removable, in that the memory management means are arranged for removing from memory definition entities having no related objects when the definition entity is designated as removable, and in that the memory management means are arranged for removing from memory definition entities corresponding to definition loading means being associated with only definition entities having no related objects.
- class va ⁇ ables are modified by the execution of class methods. If such a class is removed from memory and is reloaded when it is needed again, the value of the class va ⁇ able may be changed
- the application program can control this removal by designating a definition entity as removable or not removable.
- a further embodiment of the invention is characte ⁇ zed in that said arrangement comp ⁇ ses sto ⁇ ng means for sto ⁇ ng an identification of definition entities that are designated as removable.
- An easy way of communicating to the memory management means whether a class can be unloaded if it has no related objects is to store a table in which all loaded classed are entered together with an indication whether this class is removable or not. Alternatively, it is possible to store the identification in an object header associated with each class object.
- Fig. 1 shows the architecture of a Java virtual machine in which the present invention can be used.
- Fig. 2 shows a class loader with related classes and instantiated objects.
- Fig. 3 shows two class loaders, one having a class with an instantiated object.
- Fig. 4 shows a flow diagram of a program according to the invention for use in the memorv management svstem 14 according to Fig. 1.
- a class management subsystem 6 is arranged for loading classes not present in memory from a local hard d ⁇ ve or from a network
- the classes to be loaded by the class management subsystem 6 are first checked by a code ve ⁇ fier 4 Normally only the classes loaded from a network are ve ⁇ fied because they can be from an unknown, less reliable source At loading the classes a syntax check is performed Also the "semantic" consistency of the loaded class is checked This includes e.g. the checking whether the constants defined in a class are consistent with their type. It is e.g checked whether constants defined as st ⁇ ngs are indeed st ⁇ ngs
- Du ⁇ ng runtime a byte code ve ⁇ fication is performed. This includes checking of consistency of the stack, i.e. ve ⁇ fying that no stack overflow and underflow occurs. It also includes checking whether the type of data put into va ⁇ ables corresponds to the declaration of said va ⁇ ables.
- An execution engine 8 is arranged for executing the ve ⁇ fied byte code.
- the execution engine has three subsystems available, i.e. a system call subsystem 8 for invobng the operating system to perform certain tasks, such as the loading of an actual file from disk or from a network, or displaying graphical elements on a display device
- the Virtual Machine comp ⁇ ses a thread system 12 used for creating separate threads.
- the thread sub system 12 is also arranged for synchronizing separate threads.
- the Java VM also comp ⁇ ses a memory management subsystem 14 which includes a garbage collector for automatically removing obsolete items from memory.
- a so-called "mark and sweep" garbage collection algo ⁇ thm is used. This type of garbage collection algo ⁇ thm is well known to those skilled in the art.
- each object present in the heap has a so-called mark bit.
- the process of garbage collection starts with resetting the mark bit for all objects present in the heap. Subsequently all fields and va ⁇ ables are examined for references to objects in the heap. For each object in the heap that is referenced by a field or va ⁇ able, the mark bit is set. Finally the garbage collector sweeps the heap and reclaims the memory area used by objects of which the mark bit is not set
- Java VM comp ⁇ ses a Native Method Interface subsystem 16, enabling the use of functions w ⁇ tten in C, C++ or assembler This may be convenient in order to reuse existing bra ⁇ es or to be able to use optimized assembler routines to improve performance
- FIG. 2 shows a first class 22 and a second class 20, which are loaded by a class loader 18 From class 22 one object 24 is instantiated and class 20 has no instantiated objects
- the class 20 can be removed from memory because it has no instantiated objects.
- a method is added to the class Class to indicate whether a class can be unloaded when it has no instantiated objects anymore.
- Fig. 3 shows a first classloader 36 that has loaded a first class 32 and a second class 34. None of the classes 32 and 34 is reachable. These classes 32 and 34 and their classloader 36 will be removed from memory irrespective whether the method EnableClassUnloading is called or not, because the class loader 36 is not reachable.
- Fig. 3 shows also a second classloader 26 which has loaded a class 28 from which an object 30 is instantiated.
- the class 28 has one reachable object 30. Consequently the classloader 26. the class 28 and the object 30 will not be unloaded (removed from memory).
- the "mark phase” of the "mark and sweep” garbage collection algo ⁇ thm is completed, and the "sweep phase” is started.
- instruction 48 an object from the heap is selected for examination.
- instruction 49 it is checked whether the object is marked. If the object is marked, it must not be deleted from memory, and the program continues at instruction 60. If the object is not marked, in instruction 50 it is checked whether the object is a class. This can e.g. be determined from a field in an object header associated with the object. If the object is not a class, the program continues with instruction 58 in which the object is deleted from memory. Subsequently the program is continued at instruction 60
- the object is a class
- the class loader which loaded the class is searched. This can be done by reading a table in the VM which comp ⁇ ses the loaded classes and their associated class loader. After having found the class loader, it is checked in instruction 56 whether the class loader object is marked. If the class loader is not marked, in instruction 58 the class object is deleted. If the class loader is marked, the class is not deleted from memory and the program is continued at instruction 60.
- instruction 60 it is checked whether all objects in the heap have been processed. If this is the case, the program is terminated in instruction 62. Otherwise the program continues with instruction 48 to process the next object in the heap
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA002322950A CA2322950A1 (en) | 1999-01-06 | 1999-12-20 | Arrangement for executing program code with reduced memory requirements |
KR1020007009841A KR20010083781A (ko) | 1999-01-06 | 1999-12-20 | 메모리 요건을 줄인 프로그램 코드 실행 장치 |
EP99966997A EP1068572A2 (en) | 1999-01-06 | 1999-12-20 | Arrangement for executing program code with reduced memory requirements |
JP2000592737A JP2002534737A (ja) | 1999-01-06 | 1999-12-20 | 低減されたメモリ条件でプログラムコードを実行するための装置 |
BR9908574-7A BR9908574A (pt) | 1999-01-06 | 1999-12-20 | Sistema e processo para executar código de programa, e, suporte tangìvel portador de um programa de computador para realizar o dito processo |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP99200015 | 1999-01-06 | ||
EP99200015.8 | 1999-01-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2000041079A2 true WO2000041079A2 (en) | 2000-07-13 |
WO2000041079A3 WO2000041079A3 (en) | 2000-11-02 |
Family
ID=8239783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/EP1999/010301 WO2000041079A2 (en) | 1999-01-06 | 1999-12-20 | Arrangement for executing program code with reduced memory requirements |
Country Status (8)
Country | Link |
---|---|
US (1) | US6681381B1 (ko) |
EP (1) | EP1068572A2 (ko) |
JP (1) | JP2002534737A (ko) |
KR (1) | KR20010083781A (ko) |
CN (1) | CN1139032C (ko) |
BR (1) | BR9908574A (ko) |
CA (1) | CA2322950A1 (ko) |
WO (1) | WO2000041079A2 (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003012637A2 (en) * | 2001-07-31 | 2003-02-13 | Sun Microsystems, Inc. | Two tier clusters for representation of objects in java programming environments |
GB2405506A (en) * | 2003-08-25 | 2005-03-02 | Samsung Electronics Co Ltd | Benchmarking Garbage Collection in Java Virtual Machines |
EP1530131A2 (de) | 2003-11-05 | 2005-05-11 | Giesecke & Devrient GmbH | Beschleunigtes Referenzfinden für eine automatische Speicherbereinigung (Garbage Collection) |
US7082597B2 (en) | 2001-06-20 | 2006-07-25 | Sun Microsystems, Inc. | Representation of objects in a Java programming environment |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1301854B1 (en) * | 2000-05-25 | 2011-11-23 | Oracle America, Inc. | Method and apparatus for creating efficient native methods that extend a bytecode interpreter |
US7114152B2 (en) * | 2002-01-08 | 2006-09-26 | International Business Machines Corporation | Method, apparatus, and program to determine the mutability of an object at loading time |
JP2005018425A (ja) * | 2003-06-26 | 2005-01-20 | Matsushita Electric Ind Co Ltd | プログラム変換方法、プログラムおよび記憶媒体 |
US7263532B2 (en) * | 2003-09-23 | 2007-08-28 | Microsoft Corporation | Region-based memory management for object-oriented programs |
US7823137B2 (en) * | 2004-10-21 | 2010-10-26 | International Business Machines Corporation | Process and implementation for using byte code insertion to modify a class definition to define and use probes for application components |
WO2007076629A1 (en) * | 2005-12-30 | 2007-07-12 | Intel Corporation | Type checking for object-oriented programming languages |
EP1994466A1 (en) * | 2006-03-01 | 2008-11-26 | Symbian Software Limited | Code size reduction by outlining specific functions in a library |
US8375373B2 (en) * | 2010-04-19 | 2013-02-12 | Microsoft Corporation | Intermediate language support for change resilience |
JP6010961B2 (ja) * | 2012-03-27 | 2016-10-19 | 日本電気株式会社 | データ参照元特定システム及びその特定方法、並びにそのコンピュータ・プログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3294326B2 (ja) * | 1992-07-09 | 2002-06-24 | 株式会社日立製作所 | データ処理方法および装置 |
US5729710A (en) * | 1994-06-22 | 1998-03-17 | International Business Machines Corporation | Method and apparatus for management of mapped and unmapped regions of memory in a microkernel data processing system |
US5925100A (en) * | 1996-03-21 | 1999-07-20 | Sybase, Inc. | Client/server system with methods for prefetching and managing semantic objects based on object-based prefetch primitive present in client's executing application |
US6134602A (en) * | 1997-09-24 | 2000-10-17 | Microsoft Corporation | Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system |
-
1999
- 1999-12-20 JP JP2000592737A patent/JP2002534737A/ja active Pending
- 1999-12-20 CA CA002322950A patent/CA2322950A1/en not_active Abandoned
- 1999-12-20 WO PCT/EP1999/010301 patent/WO2000041079A2/en not_active Application Discontinuation
- 1999-12-20 CN CNB998035068A patent/CN1139032C/zh not_active Expired - Fee Related
- 1999-12-20 EP EP99966997A patent/EP1068572A2/en not_active Withdrawn
- 1999-12-20 BR BR9908574-7A patent/BR9908574A/pt not_active IP Right Cessation
- 1999-12-20 KR KR1020007009841A patent/KR20010083781A/ko active IP Right Grant
-
2000
- 2000-01-05 US US09/475,568 patent/US6681381B1/en not_active Expired - Fee Related
Non-Patent Citations (3)
Title |
---|
SUN MICROSYSTEMS, INC.: CLARIFICATIONS AND AMENDMENTS TO THE JAVA LANGUAGE SPECIFICATION, [Online] 4 May 1998 (1998-05-04), XP002143375 Retrieved from the Internet: <URL:HTTP://JAVA.SUN.COM/DOCS/BOOKS/JLS/UN LOADING-RATIONALE.HTML> [retrieved on 2000-07-24] * |
SUN MICROSYSTEMS, INC.: JAVA DEVELOPER CONNECTION TECH TIPS", [Online] 3 September 1997 (1997-09-03), XP002143402 Retrieved from the Internet: <URL:HTTP://DEVELOPER.JAVA.SUN.COM/DEVELOP ER/TECHTIPS/1997/TT0903.HTML#TIP2> [retrieved on 2000-07-25] * |
VENNERS, BILL: "Under The Hood: Java's Garbage Collected Heap" JAVAWORLD, [Online] August 1996 (1996-08), XP002143401 Retrieved from the Internet: <URL:http://www.javaworld.com/javaworld/jw -08-1996/jw-08-gc_p.html> [retrieved on 2000-07-25] * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7082597B2 (en) | 2001-06-20 | 2006-07-25 | Sun Microsystems, Inc. | Representation of objects in a Java programming environment |
WO2003012637A2 (en) * | 2001-07-31 | 2003-02-13 | Sun Microsystems, Inc. | Two tier clusters for representation of objects in java programming environments |
WO2003012637A3 (en) * | 2001-07-31 | 2004-09-23 | Sun Microsystems Inc | Two tier clusters for representation of objects in java programming environments |
US7036120B2 (en) | 2001-07-31 | 2006-04-25 | Sun Microsystems, Inc. | Two tier clusters for representation of objects in Java programming environments |
GB2405506A (en) * | 2003-08-25 | 2005-03-02 | Samsung Electronics Co Ltd | Benchmarking Garbage Collection in Java Virtual Machines |
EP1530131A2 (de) | 2003-11-05 | 2005-05-11 | Giesecke & Devrient GmbH | Beschleunigtes Referenzfinden für eine automatische Speicherbereinigung (Garbage Collection) |
EP1530131A3 (de) * | 2003-11-05 | 2008-01-09 | Giesecke & Devrient GmbH | Beschleunigtes Referenzfinden für eine automatische Speicherbereinigung (Garbage Collection) |
Also Published As
Publication number | Publication date |
---|---|
JP2002534737A (ja) | 2002-10-15 |
KR20010083781A (ko) | 2001-09-01 |
CN1139032C (zh) | 2004-02-18 |
CA2322950A1 (en) | 2000-07-13 |
WO2000041079A3 (en) | 2000-11-02 |
US6681381B1 (en) | 2004-01-20 |
BR9908574A (pt) | 2000-11-21 |
EP1068572A2 (en) | 2001-01-17 |
CN1292119A (zh) | 2001-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100864192B1 (ko) | 사전 내면화된 프로그램 파일들을 생성 및 이용하기 위한 방법 및 디바이스 | |
CN108139896B (zh) | 扩展虚拟机指令集体系架构 | |
US6757890B1 (en) | Methods and apparatus for enabling local Java object allocation and collection | |
US6272674B1 (en) | Method and apparatus for loading a Java application program | |
US6820101B2 (en) | Methods and apparatus for optimizing garbage collection using separate heaps of memory for storing local objects and non-local objects | |
US11249758B2 (en) | Conditional branch frame barrier | |
WO2000041079A2 (en) | Arrangement for executing program code with reduced memory requirements | |
US6584478B1 (en) | Transparent garbage collection of resources | |
JPH0644085A (ja) | アクセスを実行する方法及び装置並びにコンピュータシステム | |
US8042103B2 (en) | Pre-translated files used in a virtual machine | |
US20070203959A1 (en) | Apparatus and method for managing resources using virtual ID in multiple Java application environment | |
EP1489518B1 (en) | Embedded garbage collection | |
US6901591B1 (en) | Frameworks for invoking methods in virtual machines | |
CN106980516B (zh) | 信息处理装置及资源管理方法 | |
Agesen et al. | Finding references in Java stacks | |
EP1489492A1 (en) | Two-step instruction resolution | |
MXPA00008635A (en) | Arrangement for executing program code with reduced memory requirements | |
Tools | StackwalkerAPI Programmer’s Guide | |
CN107153554B (zh) | 信息处理装置和库管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 99803506.8 Country of ref document: CN |
|
AK | Designated states |
Kind code of ref document: A2 Designated state(s): BR CA CN JP KR MX |
|
AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1999966997 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: PA/a/2000/008635 Country of ref document: MX |
|
ENP | Entry into the national phase |
Ref document number: 2322950 Country of ref document: CA |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1020007009841 Country of ref document: KR |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
AK | Designated states |
Kind code of ref document: A3 Designated state(s): BR CA CN JP KR MX |
|
AL | Designated countries for regional patents |
Kind code of ref document: A3 Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE |
|
WWP | Wipo information: published in national office |
Ref document number: 1999966997 Country of ref document: EP |
|
WWP | Wipo information: published in national office |
Ref document number: 1020007009841 Country of ref document: KR |
|
WWR | Wipo information: refused in national office |
Ref document number: 1020007009841 Country of ref document: KR |
|
WWW | Wipo information: withdrawn in national office |
Ref document number: 1999966997 Country of ref document: EP |