This application claims the benefit of Korean Patent Application No. 10-2005-0103797, filed on Nov. 1, 2005, and Korean Patent Application No. 10-2005-0124056, filed on Dec. 15, 2005, in the Korean Intellectual Property Office, the disclosures of which are incorporated herein in their entirety by reference.
1. Field of the Invention
The present invention relates to a garbage collection unit and method thereof, and more particularly, to a garbage collection unit and method capable of guaranteeing a real-time operation by decreasing delay time due to garbage collection in an embedded environment.
2. Description of Related Art
Among Java platforms, J2ME is Java technology for an embedded environment and is used for an embedded apparatus, which is connected to a network, or for a mobile device such as a smart phone, a hand-held device, a PDA, a screen phone, a set-top box, or a net-TV. The J2ME can be classified into connected limited device configuration (CLDC) and connected device configuration (CDC) platforms based on the targeting device type.
The CDLC platform is loaded and used in the type of targeting device which has a CPU, the memory or performance of which is extremely limited such as in a cellular phone and a PDA. On the other hand, the CDC platform is mainly used in the type of embedded system which has extended resources and performs relatively highly.
Generally, a garbage collector uses a method such as counting references of an object, which is called a reference counting garbage collector, marking whether an object can be reached from a root set and collecting the garbage at once, which is called Mark & Sweep, or dividing a heap memory space into two spaces and copying surviving objects in one space into the other space, which is called a semi-space copying collector.
In Java, dynamic memory allocation or garbage collection has an important influence on the performance of a device. Moreover, there are several problems in a device with an embedded environment. First, most of the embedded devices have a small memory size. Second, in a battery-operated system, power consumption is an important parameter which needs to be optimized. Third, the performance of a Java virtual machine in an embedded environment is not as good as a general system in which many native classes are supported. The embedded Java virtual machine is designed to be operated for a long time in an embedded system with a limited memory, and thus it is important to generate and manage a Java object.
The present invention provides a garbage collection unit and a method capable of minimizing a time delay due to the garbage collection and capable of acquiring a maximal efficiency of memory.
According to an aspect of the present invention, there is provided a garbage collection unit comprising: a memory manager dividing a memory into a young generation area including first and second areas and an old generation area including a predetermined number of blocks; and a garbage collector alternately performing the garbage collection in the first and second areas of the young generation area and performing the garbage collection in the old generation in units of individual frames, each frame comprising a predetermined number of blocks.
According to another aspect of the present invention, there is provided a garbage collection method, the method including: (a) dividing a memory into a young generation area including first and second areas and an old generation area including a predetermined number of blocks; and (b) alternately performing a garbage collection on the first and second areas of the young generation area and performing the garbage collection in the old generation area in units of individual frames, each frame comprising a predetermined number of blocks.
The above and other features and advantages of the present invention will become more apparent by describing in detail exemplary embodiments thereof with reference to the attached drawings in which:
A garbage collection unit and a garbage collection method according to an embodiment of the present invention will now be described more fully with reference to the accompanying drawings, in which exemplary embodiments of the invention are shown.
When a Java virtual machine 100 receives a request for memory assignment from a Java program, a memory manager 110 assigns requested memory 130 from a memory heap, which is managed by the memory manager 110, to the application program and acquires required memory by operating a garbage collector 120 when there is not enough memory available. The memory manager 110 and the garbage collector 120 cannot be operated independently from each other. In other words, the memory manager 110 operates based on a method of performing the garbage collection used in the garbage collector 120.
In the generational garbage collector illustrated in
Referring to
The memory manager 310 divides a memory heap into young generation and old generation areas. In addition, the memory manager 310 divides the young generation area into two portions and the old generation area into a predetermined number of blocks.
The garbage collector 320 applies a semi-space copying collector 322 to the young generation area and a copying collector 324 to the old generation area.
The semi-space copying collector 322 performs garbage collection in the two areas of the young generation area, that is first and second areas, alternatively. The semi-space copying collector 322 copies a surviving object to the second area when the garbage collection in the first area is performed, while the semi-space copying collector 332 copies a surviving object to the first area when the garbage collection to the second area is performed.
The copying collector 324 performs garbage collection on the old generation in units of individual frames including a predetermined number of blocks of the old generation, and copies a surviving object into a frame, called a reserved frame, in which previous garbage collection has been performed.
Each block of the old generation area includes a reference bit map indicating whether objects in the block are referenced by other objects. The garbage collector 320 searches for an object which is not referenced by other objects, among objects which cannot be reached from a root set, based on the reference bit map and determines that the searched object is garbage. The determination of the garbage and the search for the garbage will be described later in more detail with reference to
Referring to
The young generation area 410 is divided into a fromSpace 430 and a toSpace 440. The fromSpace 430 is an area which is a target for the garbage collection, and the toSpace 440 is an area into which a surviving object is copied.
When an object is moved into another area, child objects of the object should be moved together. In order to determine whether all child objects of each object are moved, a color is specified to each object. For example, a white color indicates that a corresponding object has not been searched yet, a grey color indicates that a corresponding object is searched and that all of the child objects of the object have not been searched yet, and a black color indicates that all of the child objects of the object have been searched and copied.
Referring to
The garbage collector performs the garbage collection in a predetermined target frame at once, rather than in the total memory heap, and thereafter moves to the next target frame. In other words, the garbage collector performs a first garbage collection in a first frame 600 and thereafter performs a second garbage collection in a second frame 610. In this way, the garbage collector performs the garbage collection in third and fourth frames 620 and 630, respectively.
In a memory heap of the old generation, a reserved frame 640 exists, and a surviving object, after the garbage collection is performed, is copied into the reserved frame 640. After the garbage collection is performed on the predetermined frame, the predetermined frame in which the garbage collection is performed becomes the reserved frame 640. A vacant block included in the reserved frame 640 is divided in order to have a free space into which a new object is copied.
Whether an object is garbage or not is determined based on whether the object can be reached from a root set. However, an object which is referenced by another object, although the object cannot be reached from the root set, should not be regarded as garbage.
To prevent an object referenced by another object from being regarded as garbage, all objects included in the memory heap should be checked to determine whether the objects are referenced by another object. However, a conventional method takes a lot of time in checking whether an object is referenced, and accordingly the conventional method is not suitable for an embedded environment requiring a real time operation.
A problem whereby an object referenced by another object becomes garbage, that is, a problem of a write-barrier, occurs in two cases. A first case occurs when an object of a young generation, which is referenced by an object of an old generation, becomes a target for the garbage collection. A second case occurs when an object of a frame targeted for the garbage collection is referenced by a block of a different frame, when the garbage collection is performed in the old generation.
Referring to
A header of each block 710,720,730, or 740 of a memory heap includes a reference bit map 750, and the reference bit map 750 indicates whether there is an object in the corresponding block, in which the reference bit map 750 is located, referenced by an object of a different generation or an object of a different block of the same generation. For example, a one in the reference bit map 750 indicates that there is a referenced object, while a zero in the reference bit map 750 indicates that there is no referenced object. Thus, the number of blocks to be checked can be decreased using the reference bit map 750.
Although blocks to be checked are determined by the primary filter using the reference bit map 750, many objects can be included in a block, and thus checking all the objects takes a lot of time. Accordingly, a secondary filter is required.
Each block 800 is logically divided into pages 810, a reference status for each page is stored, and a searching operation for an object can be changed according to the corresponding stored reference status.
Referring to
When the reference status is CLEAN, the corresponding page is not searched, and when the reference status is DIRTY, all objects in the corresponding page should be searched. When the reference status is SUMMARIZE, an address of an object which refers to a different block is stored in a separate summary table 820, so that the object can be acquired in a speedy manner. The address of an object which refers to an object in a different block can be acquired easily and quickly using the summary table 820.
Referring to
Referring to
The objects which have been copied into the toSpace have not been fully searched, including child objects of the objects, and accordingly painted in grey as described with reference to
When the searches for all the root sets are completed (S1030), roles of the fromSpace and the toSpace are exchanged with each other (S1035). Accordingly, the next garbage collection is performed in the toSpace, a surviving object is copied into the fromSpace, and thereafter the roles of the toSpace and fromSpace are exchanged with each other again.
Referring to
The invention can also be embodied as computer readable codes on a computer readable recording medium. The computer readable recording medium is any data storage device that can store data which can be thereafter read by a computer system. Examples of the computer readable recording medium include read-only memory (ROM), random-access memory (RAM), CD-ROMs, magnetic tapes, floppy disks, optical data storage devices, and carrier waves such as data transmission through the Internet. The computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.
A garbage collector according to an embodiment of the present invention is capable of minimizing delay time due to garbage collection, and is thereby suitable for an embedded environment requiring a real-time operation. In addition, the garbage collector can acquire a maximal efficiency of memory and can be loaded in a Java virtual machine for operating Java applications, thereby operating Java applications rapidly in various embedded apparatuses.
While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. The exemplary embodiments should be considered in descriptive sense only and not for purposes of limitation. Therefore, the scope of the invention is defined not by the detailed description of the invention but by the appended claims, and all differences within the scope will be construed as being included in the present invention.
Number | Date | Country | Kind |
---|---|---|---|
10-2005-0103797 | Nov 2005 | KR | national |
10-2005-0124056 | Dec 2005 | KR | national |