US6434575B1 - Method of instrumenting garbage collection generating a trace file making a single pass analysis of object heap - Google Patents

Method of instrumenting garbage collection generating a trace file making a single pass analysis of object heap Download PDF

Info

Publication number
US6434575B1
US6434575B1 US09/190,562 US19056298A US6434575B1 US 6434575 B1 US6434575 B1 US 6434575B1 US 19056298 A US19056298 A US 19056298A US 6434575 B1 US6434575 B1 US 6434575B1
Authority
US
United States
Prior art keywords
objects
garbage collection
heap
operable
live
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.)
Expired - Lifetime
Application number
US09/190,562
Inventor
Robert Francis Berry
Raymond M. Bryant
Weiming Gu
John Day Howard
William Robert Reynolds
Robert J. Urquhart
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
Priority to US09/190,562 priority Critical patent/US6434575B1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: URQUHART, ROBERT J., GU, WEIMING, REYNOLDS, WILLIAM R., BERRY, ROBERT F., BRYANT, RAYMOND M., HOWARD, JOHN D.
Application granted granted Critical
Publication of US6434575B1 publication Critical patent/US6434575B1/en
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/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • 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

Definitions

  • the present invention relates in general to a data processing system, and in particular, to the instrumentation of garbage collection in a data processing system.
  • Java In Java, as well as other programming languages such as Lisp and Smalltalk, memory management is automatically performed. Objects are allocated in a runtime data area called the heap, and are deallocated when no longer needed. In the Java context, the Java Virtual Machine (JVM) specification dictates that objects be deallocated when they are no longer required by the JVM. Deallocating an object that is no longer required by the executing software frees the space on the heap occupied by the object to be deallocated. The process by which objects in these languages, such as Java, are identified for deallocation, and the heap space which they occupy deallocated, when required, is referred to as garbage collection.
  • JVM Java Virtual Machine
  • the garbage collection process may compact the heap. In this way, the garbage collection process repairs fragmentation of the heap which occurs as objects of varying sizes are allocated on the heap during the course of execution of a Java or other language program which performs garbage collection. Thus, at a minimum, garbage collection must be done when there is insufficient space on the heap to allocate an object created by the executing software.
  • garbage collection consumes processing cycles that may otherwise be used by the executing application. In this respect, garbage collection may be costly. Moreover, errors in the garbage collection routines can cause failures in application software written in a programming environment which does garbage collection. Therefore, there is a need in the art for methods and apparatus which instrument the garbage collection process in a data processing system. Data generated by the instrumentation process may then be used to design changes in the garbage collection mechanism. The instrumentation apparatus and methods may then be used to generate data which may be analyzed to measure the effectiveness of any implemented changes.
  • a method of garbage collection instrumentation includes the step of generating a trace file, in which the step of generating a trace file constitutes making a single pass analysis of each object on an object heap, and writing a plurality of object data retrieved in the single pass analysis to an output file.
  • the data processing system contains circuitry operable for generating a trace file, which includes circuitry operable for making a single pass analysis of each object on an object heap, and writing a plurality of object data retrieved in the single pass analysis to an output file.
  • a computer program product operable for storage on program storage media, wherein the program product is operable for garbage collection instrumentation.
  • the program product contains programming operable for generating a trace file, in which programming operable for generating a trace file includes programming operable for making a single pass analysis of each object on an object heap, and programming operable for writing a plurality of object data retrieved in the single pass analysis to an output file.
  • FIG. 1 illustrates, in block diagram form, a data processing system in accordance with one embodiment of the present invention
  • FIG. 2A illustrates, in flowchart form, a method of garbage collection instrumentation in accordance with an embodiment of the present invention
  • FIG. 2B illustrates a method of memory-mapped file generation in accordance with an embodiment of the present invention.
  • FIG. 2C illustrates, in flowchart form, a method of generating a trace file according to an embodiment of the present invention.
  • the present invention provides a garbage collection instrumentation mechanism which collects data during a garbage collection process programming environment performing automatic memory management.
  • the data may be gathered at different phases of the garbage collection process in accordance with preselected user input.
  • the instrumentation identifies live objects and sweeps the heap gathering data related to the objects (both live and “dead”) on the heap. A trace file containing the data is generated.
  • garbage collection instrumentation of the present invention may be described in the context of a JVM. However, it will be obvious to those skilled in the art that the present invention may be practiced without such specific details. In particular, the present invention may be practiced in other programming language contexts in addition to Java. In other instances, well-known circuits have been shown in block diagram form in order not to obscure the present invention in unnecessary detail.
  • FIG. 1 an example is shown of a data processing system 100 which may be used for the invention.
  • the system has a central processing unit (CPU) 110 .
  • Garbage collection instrumentation of the present invention may be included in CPU 110 .
  • the CPU 110 is coupled to various other components by system bus 112 .
  • Read only memory (“ROM”) 116 is coupled to the system bus 112 and includes a basic input/output system (“BIOS”) that controls certain basic functions of the data processing system 100 .
  • RAM random access memory
  • I/O adapter 118 I/O adapter 118
  • communications adapter 134 are also coupled to the system bus 112 .
  • I/O adapter 118 may be a small computer system interface (“SCSI”) adapter that communicates with a disk storage device 120 .
  • SCSI small computer system interface
  • garbage collection instrumentation of the present invention may be included in RAM 114 .
  • Communications adapter 134 interconnects bus 112 with an outside network enabling the data processing system to communication with other such systems.
  • Input/Output devices are also connected to system bus 112 via user interface adapter 122 and display adapter 136 .
  • Keyboard 124 , track ball 132 , mouse 126 and speaker 128 are all interconnected to bus 112 via user interface adapter 122 .
  • Display monitor 138 is connected to system bus 112 by display adapter 136 . In this manner, a user is capable of inputting to the system throughout the keyboard 124 , trackball 132 or mouse 126 and receiving output from the system via speaker 128 and display 138 .
  • an operating system is used to coordinate the functions of the various components shown in FIG. 1 .
  • Preferred implementations of the invention include implementations as a computer system programmed to execute the method or methods described herein, and as a computer program product.
  • sets of instructions for executing the method or methods are resident in the random access memory 114 of one or more computer systems configured generally as described above.
  • the set of instructions may be stored as a computer program product in another computer memory, for example, in disk drive 120 (which may include a removable memory such as an optical disk or floppy disk for eventual use in the disk drive 120 ).
  • the computer program product can also be stored at another computer and transmitted when desired to the user's work station by a network or by an external network such as the Internet.
  • the physical storage of the sets of instructions physically changes the medium upon which it is stored so that the medium carries computer readable information.
  • the change may be electrical, magnetic, chemical, biological or some other physical change. While it is convenient to describe the invention in terms of instructions, symbols, characters, or the like, the reader should remember that all of these and similar terms should be associated with the appropriate physical elements.
  • the invention may describe terms such as comparing, validating, selecting, identifying, or other terms that could be associated with a human operator.
  • terms such as comparing, validating, selecting, identifying, or other terms that could be associated with a human operator.
  • no action by a human operator is desirable.
  • the operations described are, in large part, machine operations processing electrical signals to generate other electrical signals.
  • garbage collection initiates in step 202 , and a garbage collection counter is incremented in step 203 .
  • the counter is used in the control of the interval at which trace files are generated, as discussed further below.
  • garbage collection uses a mark and sweep technique in which a pass is made through the JVM looking for pointers into the heap that point to valid objects. Valid pointers, those that are between the beginning and end of the heap and point to valid heap objects, are marked. Following the marking pass, the garbage collector then sweeps the heap, that is, frees objects that have not been marked.
  • step 204 method 200 looks for a pre-selected memory-mapped file containing environmental variables controlling the garbage collection process. Controlling the process using a memory-mapped file allows the user of the invention to dynamically intervene in the garbage collection process while an application is running, thereby permitting the user to collect data when the user determines that an “interesting” event has occurred which the user wishes to explore further.
  • the method to be described in conjunction with steps 242 - 248 below provides a mechanism for inserting the instrumentation of the present invention into an application after the application has been started.
  • an “interesting” event such as a crash
  • the user can control the instrumentation process, via the memory-mapped file, to turn on just before the “interesting” event occurs in order to obtain data reflecting the state of the heap prior to the occurrence of the interesting event.
  • garbage collection instrumentation can be selected to turn on just prior to accessing that page and the browser application restarted.
  • Reference to the trace file may provide information as to the state of the heap generally and may reveal if the crash is due to an error in the garbage collection process, in particular. If, for example, during garbage collection, a live object is erroneously removed, the application may fatally crash.
  • the ability to control the instrumentation process of the present invention via the memory-mapped file will be discussed in conjunction with FIG. 2 B.
  • the memory-mapped file which may reside, for example, in RAM 114 of data processing system 100 in FIG. 1, is generated by control program software, according to file generation method 240 illustrated in FIG. 2 B.
  • the control program is initiated and in step 244 a memory-mapped file is created having a user pre-selected name.
  • the memory-mapped file may be created in response to user input via a graphical user interface (GUI).
  • GUI graphical user interface
  • the control program initiated in step 242 may input user provided data via a command line interface (CLI).
  • GUI graphical user interface
  • CLI command line interface
  • control values which may also be referred to as environmental values, for controlling garbage collection instrumentation method 200 are written to the memory-mapped file created in step 244 .
  • the control values may be written in response to user provided data via a GUI, or, alternatively, a CLI in accordance with alternative embodiments of the present invention.
  • environmental values may have been defined and set via mechanisms within the operating system of data processing system 100 . These may include reading the environmental values at boot from a batch file, and setting the environmental variables through a command interpreter within the operating system software.
  • Environmental variables may be used, for example, to customize the output files, the phase in the garbage collection process at which the dump is made, and control the frequency of dump file creation.
  • a pre-mark trace may be selected (discussed with respect to step 208 , below) by setting an environmental variable (GC_DUMP 1 ).
  • GC_DUMP 1 an environmental variable
  • a trace file need not be generated each time garbage collection occurs.
  • the number of garbage collection operations per trace file generation may also be controlled by an environmental value (GC_DCOUNT) in conjunction with the counter initialized in step 203 .
  • step 248 new control values are written to the memory-mapped file created in step 244 , whereby the user can control instrumentation method 200 when the user determines that an interesting event has occurred, and desires to retrieve heap data, in order to “diagnose” the event.
  • step 204 if, in step 204 , the memory-mapped file exists, the file is accessed in step 206 .
  • the control values in the memory-mapped file are then used to control method 200 .
  • step 208 If, in step 208 , a pre-mark trace has been selected, method 200 continues, in step 210 , to generate a trace file.
  • a pre-mark trace file is generated before the garbage collection mark phase occurs. Selection of a pre-mark trace, as well as post-sweep and post-compaction traces, both discussed below, may be by environmental values. Trace file generation will be discussed further in conjunction with FIG. 2C, below.
  • a garbage collection mark phase is executed.
  • the mark phase internal structures within the executing code are scanned to find pointers to live objects, which are marked as being in use.
  • the internal structures scanned may include the Java stack, the C stack, interned strings, Java Native Interface (JNI) global references, and “sticky” classes.
  • the Java stack constitutes the operand stack for JVM instructions.
  • JVM machine instructions all take operands from the Java stack, operate on them, and return results to the stack.
  • the JNI allows the JVM to access native code, that is, code that is native to the platform on which the JVM is running.
  • Native code is code that might be produced by the compilation and assembly of a high level programming language such as C or C++, and is represented by a set of instructions in object code native to the platform on which the JVM is running. Because a native function expects stack operands in accordance with native code conventions, a second stack, the C stack is also implemented in the JVM.
  • Interned strings in Java are instances of String objects, and are immutable, representing string constants. They are maintained in a pool of strings which is initially empty, but to which objects are added when the executing Java program generates instances of string objects.
  • Sticky classes are classes that are expensive to create and thus are kept even though there may be no live reference to them. The primitive classes are sticky classes, for example.
  • Pointers found in these internal structures define a subset of pointers to live objects, called, collectively, the root set.
  • the set of pointers to live objects is called the live set.
  • the root set is necessarily a subset of the live set.
  • the live set may contain pointers to objects which are referred to by another object, but which do not correspond to pointers in the root set.
  • Method 200 continues with a garbage collection sweep in step 220 . If a post-sweep trace has been selected in step 222 , instrumentation method 200 continues by generating the trace file in step 210 . Otherwise, instrumentation method 200 continues with the garbage collection compaction of the heap in step 224 . Heap compaction is costly and may not be performed during each garbage collection operation. Heap compaction may be done when there is insufficient space on the heap to accommodate allocation of additional objects. If a post-compaction trace is requested and compaction has occurred in step 224 , in step 226 , method 200 returns to step 210 and a trace file is generated.
  • Trace file generation step 210 may be further understood by referring now to FIG. 2C illustrating the flowchart of trace file generation step 210 .
  • Garbage collection instrumentation need not be performed during every garbage collection operation.
  • the Nth garbage collection operation may be instrumented, where N is a preselected integer value, which may be set by an environmental value, as previously described.
  • the garbage collection count from step 203 is compared to the trace count N. If the garbage collection count and trace count are not equal, file generation is bypassed. Otherwise, step 210 proceeds to step 252 .
  • step 252 the trace file is created. If, in step 254 , a post-sweep trace has been requested by, for example, setting a corresponding environmental value, trace file generation step 210 retrieves the marked pointers, that is, the live set, in step 256 . In step 258 , the root set, a subset of the live set, as previously discussed, is identified. In step 260 , a single pass analysis, that is, a “walk-through” examination, of the heap is performed. In other words, a pass is made through the heap, which is delimited by a pair of memory addresses, from the “bottom” to the “top” of the heap. (In some operating system environments, heap space may grow downward in memory, so the “top” of the heap may correspond to a smaller memory address, and vice versa.) In step 262 , the garbage collection counter is reset.
  • file generation step 210 collects information about the objects detected on the heap.
  • the type of entry detected may be included, which may be free space, objects, arrays of objects, or primitive arrays. Entries corresponding to free space may include the heap address and the length of the free space.
  • attributes may be indicated, for example, whether the object is pinned and whether the object is dosed. Pinned objects may not be moved during heap compaction. A dosed object is one that is pinned only for the current garbage collection. Additionally, a live set pointer associated with the object and the size of the object on the heap may be included. For objects that are not arrays of primitive objects, the class name of the object may also be included.
  • addresses representing pointers to additional objects may also be included. These addresses are references to any other objects a particular object points to.
  • the primitive type may be included, as well as the contents of the array.
  • step 254 the trace file to be generated is a pre-mark trace or a post-compaction trace
  • steps 256 and 258 are bypassed because live pointers are not marked before the garbage collection mark phase has been executed.
  • the live set pointer information discussed above, is not included in a pre-mark or post-compaction trace.
  • file generation step 210 immediately proceeds to step 260 , performing a single pass analysis of the heap as described hereinabove.
  • instrumentation method 200 continues with the garbage collection by performing the garbage collection mark phase in step 212 , discussed hereinabove. If, in step 228 , the trace is not a pre-mark trace, instrumentation method 200 determines if the trace file generated in step 210 is a post-compaction trace file, step 230 .
  • step 230 instrumentation method 200 concludes garbage collection, in step 218 . Otherwise, the trace file generated in step 210 must be a post-sweep trace file and, in step 230 , instrumentation method 200 continues by performing garbage collection compaction, in step 224 . After compaction in step 224 , instrumentation method 200 continues with step 226 as previously discussed.

Abstract

A method and apparatus for instrumenting garbage collection in a data processing system is provided. During garbage collection, a pass is made through the object heap and a plurality of heap data is retrieved and written to a trace file. The data may include the type of object, the size of the object on the heap, the class of the object, if appropriate, and a plurality of pointers, including live set pointers, and one or more tags representing attributes that may be associated with the particular object. The instrumentation may controlled to occur at a preselected phase of the garbage collection process. Additionally, a user may dynamically initiate a garbage collection instrumentation if the user determines that an event has occurred during the operation of the data processing system about which the user wishes further data.

Description

TECHNICAL FIELD
The present invention relates in general to a data processing system, and in particular, to the instrumentation of garbage collection in a data processing system.
BACKGROUND INFORMATION
In Java, as well as other programming languages such as Lisp and Smalltalk, memory management is automatically performed. Objects are allocated in a runtime data area called the heap, and are deallocated when no longer needed. In the Java context, the Java Virtual Machine (JVM) specification dictates that objects be deallocated when they are no longer required by the JVM. Deallocating an object that is no longer required by the executing software frees the space on the heap occupied by the object to be deallocated. The process by which objects in these languages, such as Java, are identified for deallocation, and the heap space which they occupy deallocated, when required, is referred to as garbage collection.
In addition to freeing space on the heap, the garbage collection process may compact the heap. In this way, the garbage collection process repairs fragmentation of the heap which occurs as objects of varying sizes are allocated on the heap during the course of execution of a Java or other language program which performs garbage collection. Thus, at a minimum, garbage collection must be done when there is insufficient space on the heap to allocate an object created by the executing software.
Although essential to the operation of the software, garbage collection consumes processing cycles that may otherwise be used by the executing application. In this respect, garbage collection may be costly. Moreover, errors in the garbage collection routines can cause failures in application software written in a programming environment which does garbage collection. Therefore, there is a need in the art for methods and apparatus which instrument the garbage collection process in a data processing system. Data generated by the instrumentation process may then be used to design changes in the garbage collection mechanism. The instrumentation apparatus and methods may then be used to generate data which may be analyzed to measure the effectiveness of any implemented changes.
SUMMARY OF THE INVENTION
The aforementioned needs are addressed by the present invention. Accordingly, there is provided, in a first form, a method of garbage collection instrumentation. The method includes the step of generating a trace file, in which the step of generating a trace file constitutes making a single pass analysis of each object on an object heap, and writing a plurality of object data retrieved in the single pass analysis to an output file.
There is also provided, in a second form, a data processing system for instrumenting garbage collection. The data processing system contains circuitry operable for generating a trace file, which includes circuitry operable for making a single pass analysis of each object on an object heap, and writing a plurality of object data retrieved in the single pass analysis to an output file.
Additionally, there is provided, in a third form, a computer program product operable for storage on program storage media, wherein the program product is operable for garbage collection instrumentation. The program product contains programming operable for generating a trace file, in which programming operable for generating a trace file includes programming operable for making a single pass analysis of each object on an object heap, and programming operable for writing a plurality of object data retrieved in the single pass analysis to an output file.
The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
FIG. 1 illustrates, in block diagram form, a data processing system in accordance with one embodiment of the present invention;
FIG. 2A illustrates, in flowchart form, a method of garbage collection instrumentation in accordance with an embodiment of the present invention;
FIG. 2B illustrates a method of memory-mapped file generation in accordance with an embodiment of the present invention; and
FIG. 2C illustrates, in flowchart form, a method of generating a trace file according to an embodiment of the present invention.
DETAILED DESCRIPTION
The present invention provides a garbage collection instrumentation mechanism which collects data during a garbage collection process programming environment performing automatic memory management. The data may be gathered at different phases of the garbage collection process in accordance with preselected user input. The instrumentation identifies live objects and sweeps the heap gathering data related to the objects (both live and “dead”) on the heap. A trace file containing the data is generated.
In the following description, numerous specific details are set forth to provide a thorough understanding of the present invention. For clarity, garbage collection instrumentation of the present invention may be described in the context of a JVM. However, it will be obvious to those skilled in the art that the present invention may be practiced without such specific details. In particular, the present invention may be practiced in other programming language contexts in addition to Java. In other instances, well-known circuits have been shown in block diagram form in order not to obscure the present invention in unnecessary detail.
Refer now to the drawings wherein depicted elements are not necessarily shown to scale and wherein like or similar elements are designated by the same reference numeral through the several views.
Referring first to FIG. 1, an example is shown of a data processing system 100 which may be used for the invention. The system has a central processing unit (CPU) 110. Garbage collection instrumentation of the present invention may be included in CPU 110. The CPU 110 is coupled to various other components by system bus 112. Read only memory (“ROM”) 116 is coupled to the system bus 112 and includes a basic input/output system (“BIOS”) that controls certain basic functions of the data processing system 100. Random access memory (“RAM”) 114, I/O adapter 118, and communications adapter 134 are also coupled to the system bus 112. I/O adapter 118 may be a small computer system interface (“SCSI”) adapter that communicates with a disk storage device 120. Alternatively, garbage collection instrumentation of the present invention may be included in RAM 114. Communications adapter 134 interconnects bus 112 with an outside network enabling the data processing system to communication with other such systems. Input/Output devices are also connected to system bus 112 via user interface adapter 122 and display adapter 136. Keyboard 124, track ball 132, mouse 126 and speaker 128 are all interconnected to bus 112 via user interface adapter 122. Display monitor 138 is connected to system bus 112 by display adapter 136. In this manner, a user is capable of inputting to the system throughout the keyboard 124, trackball 132 or mouse 126 and receiving output from the system via speaker 128 and display 138. Additionally, an operating system is used to coordinate the functions of the various components shown in FIG. 1.
Preferred implementations of the invention include implementations as a computer system programmed to execute the method or methods described herein, and as a computer program product. According to the computer system implementation, sets of instructions for executing the method or methods are resident in the random access memory 114 of one or more computer systems configured generally as described above. Until required by the computer system, the set of instructions may be stored as a computer program product in another computer memory, for example, in disk drive 120 (which may include a removable memory such as an optical disk or floppy disk for eventual use in the disk drive 120). Further, the computer program product can also be stored at another computer and transmitted when desired to the user's work station by a network or by an external network such as the Internet. One skilled in the art would appreciate that the physical storage of the sets of instructions physically changes the medium upon which it is stored so that the medium carries computer readable information. The change may be electrical, magnetic, chemical, biological or some other physical change. While it is convenient to describe the invention in terms of instructions, symbols, characters, or the like, the reader should remember that all of these and similar terms should be associated with the appropriate physical elements.
Note that the invention may describe terms such as comparing, validating, selecting, identifying, or other terms that could be associated with a human operator. However, for at least a number of the operations described herein which form part of at least one of the embodiments, no action by a human operator is desirable. The operations described are, in large part, machine operations processing electrical signals to generate other electrical signals.
Refer now to FIG. 2A in which is illustrated garbage collection instrumentation method 200 according to the present invention. Garbage collection (GC) initiates in step 202, and a garbage collection counter is incremented in step 203. (The counter is used in the control of the interval at which trace files are generated, as discussed further below.) In a JVM, for example, garbage collection uses a mark and sweep technique in which a pass is made through the JVM looking for pointers into the heap that point to valid objects. Valid pointers, those that are between the beginning and end of the heap and point to valid heap objects, are marked. Following the marking pass, the garbage collector then sweeps the heap, that is, frees objects that have not been marked. These steps will be discussed further, below.
In step 204, method 200 looks for a pre-selected memory-mapped file containing environmental variables controlling the garbage collection process. Controlling the process using a memory-mapped file allows the user of the invention to dynamically intervene in the garbage collection process while an application is running, thereby permitting the user to collect data when the user determines that an “interesting” event has occurred which the user wishes to explore further.
The method to be described in conjunction with steps 242-248 below provides a mechanism for inserting the instrumentation of the present invention into an application after the application has been started. Thus, if while the application is running, an “interesting” event, such as a crash, occurs, the user can control the instrumentation process, via the memory-mapped file, to turn on just before the “interesting” event occurs in order to obtain data reflecting the state of the heap prior to the occurrence of the interesting event. For example, in the Java context, in a Java web browser application, if during a browsing session, the browser crashes at the occurrence of a particular web page, garbage collection instrumentation can be selected to turn on just prior to accessing that page and the browser application restarted. Reference to the trace file may provide information as to the state of the heap generally and may reveal if the crash is due to an error in the garbage collection process, in particular. If, for example, during garbage collection, a live object is erroneously removed, the application may fatally crash. The ability to control the instrumentation process of the present invention via the memory-mapped file will be discussed in conjunction with FIG. 2B.
The memory-mapped file, which may reside, for example, in RAM 114 of data processing system 100 in FIG. 1, is generated by control program software, according to file generation method 240 illustrated in FIG. 2B. In step 242, the control program is initiated and in step 244 a memory-mapped file is created having a user pre-selected name. The memory-mapped file may be created in response to user input via a graphical user interface (GUI). Alternatively, the control program initiated in step 242 may input user provided data via a command line interface (CLI).
In step 246, control values, which may also be referred to as environmental values, for controlling garbage collection instrumentation method 200 are written to the memory-mapped file created in step 244. The control values may be written in response to user provided data via a GUI, or, alternatively, a CLI in accordance with alternative embodiments of the present invention.
Additionally, environmental values may have been defined and set via mechanisms within the operating system of data processing system 100. These may include reading the environmental values at boot from a batch file, and setting the environmental variables through a command interpreter within the operating system software.
Environmental variables may be used, for example, to customize the output files, the phase in the garbage collection process at which the dump is made, and control the frequency of dump file creation. Thus, in an embodiment of the invention, a pre-mark trace may be selected (discussed with respect to step 208, below) by setting an environmental variable (GC_DUMP1). Similarly, a trace file need not be generated each time garbage collection occurs. The number of garbage collection operations per trace file generation may also be controlled by an environmental value (GC_DCOUNT) in conjunction with the counter initialized in step 203. These examples are illustrative, not exhaustive and alternative sets of environmental values would be within the spirit and scope of the present invention.
If, in step 248, the user has observed an event of interest, new control values are written to the memory-mapped file created in step 244, whereby the user can control instrumentation method 200 when the user determines that an interesting event has occurred, and desires to retrieve heap data, in order to “diagnose” the event.
Returning to FIG. 2A, if, in step 204, the memory-mapped file exists, the file is accessed in step 206. The control values in the memory-mapped file are then used to control method 200.
If, in step 208, a pre-mark trace has been selected, method 200 continues, in step 210, to generate a trace file. A pre-mark trace file is generated before the garbage collection mark phase occurs. Selection of a pre-mark trace, as well as post-sweep and post-compaction traces, both discussed below, may be by environmental values. Trace file generation will be discussed further in conjunction with FIG. 2C, below.
If, however, in step 208, a pre-mark trace has not been requested, in step 212, a garbage collection mark phase is executed. In the mark phase, internal structures within the executing code are scanned to find pointers to live objects, which are marked as being in use. In an embodiment of the present invention constituting a JVM, the internal structures scanned may include the Java stack, the C stack, interned strings, Java Native Interface (JNI) global references, and “sticky” classes. The Java stack constitutes the operand stack for JVM instructions. In accordance with the JVM specification, JVM machine instructions all take operands from the Java stack, operate on them, and return results to the stack. The JNI allows the JVM to access native code, that is, code that is native to the platform on which the JVM is running. Native code is code that might be produced by the compilation and assembly of a high level programming language such as C or C++, and is represented by a set of instructions in object code native to the platform on which the JVM is running. Because a native function expects stack operands in accordance with native code conventions, a second stack, the C stack is also implemented in the JVM. Interned strings in Java are instances of String objects, and are immutable, representing string constants. They are maintained in a pool of strings which is initially empty, but to which objects are added when the executing Java program generates instances of string objects. Sticky classes are classes that are expensive to create and thus are kept even though there may be no live reference to them. The primitive classes are sticky classes, for example.
Pointers found in these internal structures define a subset of pointers to live objects, called, collectively, the root set. The set of pointers to live objects is called the live set. The root set is necessarily a subset of the live set. The live set may contain pointers to objects which are referred to by another object, but which do not correspond to pointers in the root set.
Method 200 continues with a garbage collection sweep in step 220. If a post-sweep trace has been selected in step 222, instrumentation method 200 continues by generating the trace file in step 210. Otherwise, instrumentation method 200 continues with the garbage collection compaction of the heap in step 224. Heap compaction is costly and may not be performed during each garbage collection operation. Heap compaction may be done when there is insufficient space on the heap to accommodate allocation of additional objects. If a post-compaction trace is requested and compaction has occurred in step 224, in step 226, method 200 returns to step 210 and a trace file is generated.
Trace file generation, step 210, may be further understood by referring now to FIG. 2C illustrating the flowchart of trace file generation step 210. Garbage collection instrumentation need not be performed during every garbage collection operation. In an embodiment of the present invention, the Nth garbage collection operation may be instrumented, where N is a preselected integer value, which may be set by an environmental value, as previously described. In step 250, the garbage collection count from step 203 is compared to the trace count N. If the garbage collection count and trace count are not equal, file generation is bypassed. Otherwise, step 210 proceeds to step 252.
In step 252, the trace file is created. If, in step 254, a post-sweep trace has been requested by, for example, setting a corresponding environmental value, trace file generation step 210 retrieves the marked pointers, that is, the live set, in step 256. In step 258, the root set, a subset of the live set, as previously discussed, is identified. In step 260, a single pass analysis, that is, a “walk-through” examination, of the heap is performed. In other words, a pass is made through the heap, which is delimited by a pair of memory addresses, from the “bottom” to the “top” of the heap. (In some operating system environments, heap space may grow downward in memory, so the “top” of the heap may correspond to a smaller memory address, and vice versa.) In step 262, the garbage collection counter is reset.
In passing through the heap, file generation step 210 collects information about the objects detected on the heap. The type of entry detected may be included, which may be free space, objects, arrays of objects, or primitive arrays. Entries corresponding to free space may include the heap address and the length of the free space. For objects, arrays of objects or primitive arrays, attributes may be indicated, for example, whether the object is pinned and whether the object is dosed. Pinned objects may not be moved during heap compaction. A dosed object is one that is pinned only for the current garbage collection. Additionally, a live set pointer associated with the object and the size of the object on the heap may be included. For objects that are not arrays of primitive objects, the class name of the object may also be included. Additionally, for objects and arrays of objects, addresses representing pointers to additional objects may also be included. These addresses are references to any other objects a particular object points to. For arrays of primitive objects, the primitive type may be included, as well as the contents of the array. After retrieving the aforementioned data, file generation step 210 then continues by returning to step 226, FIG. 2A.
If, in step 254, the trace file to be generated is a pre-mark trace or a post-compaction trace, then steps 256 and 258 are bypassed because live pointers are not marked before the garbage collection mark phase has been executed. Thus, the live set pointer information, discussed above, is not included in a pre-mark or post-compaction trace. Then, file generation step 210 immediately proceeds to step 260, performing a single pass analysis of the heap as described hereinabove.
Returning to FIG. 2A, if, in step 228, the trace file generated in step 210 is a pre-mark trace, instrumentation method 200 continues with the garbage collection by performing the garbage collection mark phase in step 212, discussed hereinabove. If, in step 228, the trace is not a pre-mark trace, instrumentation method 200 determines if the trace file generated in step 210 is a post-compaction trace file, step 230.
If, in step 230, the trace file generated in step 210 is a post-compaction trace file, instrumentation method 200 concludes garbage collection, in step 218. Otherwise, the trace file generated in step 210 must be a post-sweep trace file and, in step 230, instrumentation method 200 continues by performing garbage collection compaction, in step 224. After compaction in step 224, instrumentation method 200 continues with step 226 as previously discussed.
Although the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the invention as defined by the appended claims.

Claims (29)

What is claimed is:
1. A method of instrumenting garbage collection comprising the step of generating a trace file, wherein said step of generating a trace file comprises the steps of:
making a single pass analysis of each object on an object heap; and
writing a plurality of object data retrieved in said single pass analysis to an output file.
2. The method of claim 1 wherein said step of generating a trace file further comprises the step of identifying a set of live objects.
3. The method of claim 2 wherein said step of generating a trace file further comprises the step of identifying a set of root objects, said set of root objects being a subset of said set of live objects.
4. The method of claim 2 further comprising the step of performing a garbage collection mark operation, wherein said set of live objects comprises a set of marked objects.
5. The method of claim 4 further comprising the step of performing a garbage collection sweep operation, wherein a second set of objects on said heap is removed from said heap, said second set being complementary to said set of live objects.
6. The method of claim 5 further comprising the step of garbage collection compaction, said heap retrieving a contiguous portion of memory space corresponding to an aggregation of memory space occupied by said second set of objects in response thereto.
7. The method of claim 1 further comprising the step of creating a memory mapped file including one or more control values, said one or more control values for controlling said garbage collection instrumentation.
8. The method of claim 7 further comprising the step of modifying at least one of said one or more control values in response to a user-determined event.
9. The method of claim 1 wherein said garbage collection instrumentation is performed at preselected intervals.
10. The method of claim 9 wherein said preselected interval is selected by setting a corresponding control value.
11. The method of claim 1 wherein said plurality of object data includes the object type, data values indicating one or more attributes associated with each object, object class names, and for a post-sweep trace, a live pointer associated with each live object.
12. A data processing system for instrumenting garbage collection comprising circuitry operable for generating a trace file, wherein said circuitry operable for generating a trace file comprises:
circuitry operable for making a single pass analysis of each object on an object heap; and
circuitry operable for writing a plurality of object data retrieved in said single pass analysis to an output file.
13. The data processing system of claim 12 wherein said circuitry operable for generating a trace file further comprises circuitry operable for identifying a set of live objects.
14. The data processing system of claim 13 wherein said circuitry operable for generating a trace file further comprises circuitry operable for identifying a set of root objects, said set of root objects being a subset of said set of live objects.
15. The data processing system of claim 13 further comprising circuitry operable for performing a garbage collection mark operation, wherein said set of live objects comprises a set of marked objects.
16. The data processing system of claim 15 further comprising circuitry operable for performing a garbage collection sweep operation, wherein a second set of objects on said heap is removed from said heap, said second set being complementary to said set of live objects.
17. The data processing system of claim 16 further comprising circuitry operable for garbage collection compaction, said heap retrieving a contiguous portion of memory space corresponding to an aggregation of memory space occupied by said second set of objects in response thereto.
18. The data processing system claim 12 further comprising circuitry operable for creating a memory mapped file including one or more control values, said one or more control values for controlling said garbage collection instrumentation.
19. The data processing system of claim 18 further comprising circuitry operable for modifying at least one of said one or more control values in response to a user-determined event.
20. The data processing system of claim 12 wherein said plurality of object data includes the object type, data values indicating one or more attributes associated with each object, object class names, and for a post-sweep trace, a live pointer associated with each live object.
21. A computer program product operable for storage on program storage media, the program product operable for instrumenting garbage collection, the program product comprising programming operable for generating a trace file, wherein said programming operable for generating a trace file comprises:
programming operable for making a single pass analysis of each object on an object heap; and
programming operable for writing a plurality of object data retrieved in said single pass analysis to an output file.
22. The computer program product of claim 21 wherein said programming operable for generating a trace file further comprises programming operable for identifying a set of live objects.
23. The computer program product of claim 22 wherein said programming operable for generating a trace file further comprises programming operable for identifying a set of root objects, said set of root objects being a subset of said set of live objects.
24. The computer program product of claim 22 further comprising programming operable for performing a garbage collection mark operation, wherein said set of live objects comprises a set of marked objects.
25. The computer program product of claim 24 further comprising programming operable for performing a garbage collection sweep operation, wherein a second set of objects on said heap is removed from said heap, said second set being complementary to said set of live objects.
26. The computer program product of claim 25 further comprising programming operable for garbage collection compaction, said heap retrieving a contiguous portion of memory space corresponding to an aggregation of memory space occupied by said second set of objects in response thereto.
27. The computer program product of claim 21 further comprising programming operable for creating a memory mapped file including one or more control values, said one or more control values for controlling said garbage collection instrumentation.
28. The computer program product of claim 27 further comprising programming operable for modifying at least one of said one or more control values in response to a user-determined event.
29. The computer program product of claim 21 wherein said plurality of object data includes the object type, data values indicating one or more attributes associated with each object, object class names, and for a post-sweep trace, a live pointer associated with each live object.
US09/190,562 1998-11-12 1998-11-12 Method of instrumenting garbage collection generating a trace file making a single pass analysis of object heap Expired - Lifetime US6434575B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/190,562 US6434575B1 (en) 1998-11-12 1998-11-12 Method of instrumenting garbage collection generating a trace file making a single pass analysis of object heap

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/190,562 US6434575B1 (en) 1998-11-12 1998-11-12 Method of instrumenting garbage collection generating a trace file making a single pass analysis of object heap

Publications (1)

Publication Number Publication Date
US6434575B1 true US6434575B1 (en) 2002-08-13

Family

ID=22701852

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/190,562 Expired - Lifetime US6434575B1 (en) 1998-11-12 1998-11-12 Method of instrumenting garbage collection generating a trace file making a single pass analysis of object heap

Country Status (1)

Country Link
US (1) US6434575B1 (en)

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030005025A1 (en) * 2001-06-27 2003-01-02 Shavit Nir N. Load-balancing queues employing LIFO/FIFO work stealing
US6581077B2 (en) * 2000-12-12 2003-06-17 Sun Microsystems, Inc. Method and apparatus for storing short-lived objects in a virtual machine
US6598141B1 (en) * 2001-03-08 2003-07-22 Microsoft Corporation Manipulating interior pointers on a stack during garbage collection
US6681234B2 (en) * 2000-12-12 2004-01-20 Sun Microsystems, Inc. Method and apparatus for storing long-lived objects in a virtual machine
US6701520B1 (en) * 1999-05-11 2004-03-02 International Business Machines Corporation Preventing garbage collection of objects in object oriented computer programming languages
US20040054695A1 (en) * 2002-09-17 2004-03-18 International Business Machines Corporation Problem determination method, system and program product
US20040073764A1 (en) * 2002-07-31 2004-04-15 Bea Systems, Inc. System and method for reinforcement learning and memory management
US20040181782A1 (en) * 2003-03-13 2004-09-16 Piotr Findeisen System and method for optimizing memory usage by locating lingering objects
US20040181562A1 (en) * 2003-03-13 2004-09-16 Piotr Findeisen System and method for determining deallocatable memory in a heap
US6823351B1 (en) * 2000-05-15 2004-11-23 Sun Microsystems, Inc. Work-stealing queues for parallel garbage collection
US6826583B1 (en) 2000-05-15 2004-11-30 Sun Microsystems, Inc. Local allocation buffers for parallel garbage collection
US20050081190A1 (en) * 2003-09-30 2005-04-14 International Business Machines Corporation Autonomic memory leak detection and remediation
US20050273568A1 (en) * 2004-06-04 2005-12-08 International Business Machines Corporation Free item distribution among multiple free lists during garbage collection for more efficient object allocation
US20050273567A1 (en) * 2004-06-04 2005-12-08 International Business Machines Corporation Assigning sections within a memory heap for efficient garbage collection of large objects
US20060212852A1 (en) * 2005-03-16 2006-09-21 Jinwoo Hwang Methods, systems and computer program products for detecting memory leaks
US20060253845A1 (en) * 2005-05-03 2006-11-09 International Business Machines Corporation Method and apparatus for determining leaks in a Java heap
US7237085B2 (en) * 2004-05-28 2007-06-26 Oracle International Corporation Architecture for a scalable heap analysis tool
US20070255775A1 (en) * 2006-04-28 2007-11-01 Sap Ag Method and system for inspecting memory leaks
US7299384B1 (en) 2004-08-17 2007-11-20 Symantec Operating Corporation Fixing prematurely freed objects
US20080005281A1 (en) * 2006-06-29 2008-01-03 Microsoft Corporation Error capture and reporting in a distributed computing environment
US7376684B2 (en) 2004-06-04 2008-05-20 International Business Machines Corporation Efficient parallel bitwise sweep during garbage collection
US20090125515A1 (en) * 2007-11-12 2009-05-14 Oliver Goetz String pooling
US8775923B1 (en) * 2011-09-26 2014-07-08 Google Inc. Web page restoration
US20160306739A1 (en) * 2015-04-16 2016-10-20 Microsoft Technology Licensing, Llc Garbage collection of non-pinned objects within heap
US20170083298A1 (en) * 2015-09-23 2017-03-23 Microsoft Technology Licensing, Llc Resilient format for distribution of ahead-of-time compiled code components
US20170123818A1 (en) * 2015-10-30 2017-05-04 AppDynamics, Inc. Dynamic Configuration of Native Functions to Intercept
US10719438B2 (en) 2015-06-30 2020-07-21 Samsung Electronics Co., Ltd. Storage device and garbage collection method thereof
US10824612B2 (en) 2017-08-21 2020-11-03 Western Digital Technologies, Inc. Key ticketing system with lock-free concurrency and versioning
US11055266B2 (en) 2017-08-21 2021-07-06 Western Digital Technologies, Inc. Efficient key data store entry traversal and result generation
US11210211B2 (en) 2017-08-21 2021-12-28 Western Digital Technologies, Inc. Key data store garbage collection and multipart object management
US11210212B2 (en) 2017-08-21 2021-12-28 Western Digital Technologies, Inc. Conflict resolution and garbage collection in distributed databases

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321834A (en) * 1989-11-28 1994-06-14 Xerox Corporation Method and system for reclaiming unreferenced computer memory space
US5392432A (en) * 1991-08-27 1995-02-21 At&T Corp. Method for automatic system resource reclamation for object-oriented systems with real-time constraints
US5903899A (en) * 1997-04-23 1999-05-11 Sun Microsystems, Inc. System and method for assisting exact Garbage collection by segregating the contents of a stack into sub stacks
US5953736A (en) * 1997-04-23 1999-09-14 Sun Microsystems, Inc. Write barrier system and method including pointer-specific instruction variant replacement mechanism
WO1999064955A1 (en) * 1998-06-09 1999-12-16 Sun Microsystems, Inc. Incremental heap expansion in a real-time garbage collector
US6026485A (en) * 1996-01-24 2000-02-15 Sun Microsystems, Inc. Instruction folding for a stack-based machine
US6070173A (en) * 1997-11-26 2000-05-30 International Business Machines Corporation Method and apparatus for assisting garbage collection process within a java virtual machine
US6098080A (en) * 1998-05-05 2000-08-01 International Business Machines Corporation Computer system, program product and method of collecting interned data with a mark sweep collector
US6105040A (en) * 1997-06-30 2000-08-15 Sun Microsystems, Inc. Method and apparatus for managing stored objects
WO2000060469A1 (en) * 1999-03-31 2000-10-12 Koninklijke Philips Electronics N.V. A method of scheduling garbage collection

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321834A (en) * 1989-11-28 1994-06-14 Xerox Corporation Method and system for reclaiming unreferenced computer memory space
US5392432A (en) * 1991-08-27 1995-02-21 At&T Corp. Method for automatic system resource reclamation for object-oriented systems with real-time constraints
US6026485A (en) * 1996-01-24 2000-02-15 Sun Microsystems, Inc. Instruction folding for a stack-based machine
US5903899A (en) * 1997-04-23 1999-05-11 Sun Microsystems, Inc. System and method for assisting exact Garbage collection by segregating the contents of a stack into sub stacks
US5953736A (en) * 1997-04-23 1999-09-14 Sun Microsystems, Inc. Write barrier system and method including pointer-specific instruction variant replacement mechanism
US6105040A (en) * 1997-06-30 2000-08-15 Sun Microsystems, Inc. Method and apparatus for managing stored objects
US6070173A (en) * 1997-11-26 2000-05-30 International Business Machines Corporation Method and apparatus for assisting garbage collection process within a java virtual machine
US6098080A (en) * 1998-05-05 2000-08-01 International Business Machines Corporation Computer system, program product and method of collecting interned data with a mark sweep collector
WO1999064955A1 (en) * 1998-06-09 1999-12-16 Sun Microsystems, Inc. Incremental heap expansion in a real-time garbage collector
US6286016B1 (en) * 1998-06-09 2001-09-04 Sun Microsystems, Inc. Incremental heap expansion in a real-time garbage collector
WO2000060469A1 (en) * 1999-03-31 2000-10-12 Koninklijke Philips Electronics N.V. A method of scheduling garbage collection

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Chang et al., Evaluation of an object-caching coprocessor design for object oriented systems, computer Design: VLSI in computers and proceedings 1993, IEEE international conference, pp. 132-139.* *
Medina, R, Incremental garbage collection for causal relationship computation in distributed systems, Parallel and distributed processing, 1993, proceding fifthe IEEE symposium, Dec., 1993, pp. 650-655.* *
Washabaugh, DM et al., Distributed garbage collection of active objects, distributed computing systems, 1991, 11th Internationa conference, May 1991, pp. 369-376. *

Cited By (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6701520B1 (en) * 1999-05-11 2004-03-02 International Business Machines Corporation Preventing garbage collection of objects in object oriented computer programming languages
US6823351B1 (en) * 2000-05-15 2004-11-23 Sun Microsystems, Inc. Work-stealing queues for parallel garbage collection
US7640544B2 (en) 2000-05-15 2009-12-29 Sun Microsystems, Inc. Work stealing queues for parallel garbage collection
US20050132374A1 (en) * 2000-05-15 2005-06-16 Sun Microsystems, Inc. Work stealing queues for parallel garbage collection
US6826583B1 (en) 2000-05-15 2004-11-30 Sun Microsystems, Inc. Local allocation buffers for parallel garbage collection
US6581077B2 (en) * 2000-12-12 2003-06-17 Sun Microsystems, Inc. Method and apparatus for storing short-lived objects in a virtual machine
US6681234B2 (en) * 2000-12-12 2004-01-20 Sun Microsystems, Inc. Method and apparatus for storing long-lived objects in a virtual machine
US6898611B1 (en) * 2001-03-08 2005-05-24 Microsoft Corporation Declarative pinning
US6598141B1 (en) * 2001-03-08 2003-07-22 Microsoft Corporation Manipulating interior pointers on a stack during garbage collection
US7433862B1 (en) 2001-03-08 2008-10-07 Microsoft Corporation Declarative pinning
US7454447B1 (en) * 2001-03-08 2008-11-18 Microsoft Corporation Declarative pinning
US7533123B1 (en) * 2001-03-08 2009-05-12 Microsoft Corporation Declarative pinning
US20090222802A1 (en) * 2001-03-08 2009-09-03 Microsoft Corporation Declarative pinning
US20090222801A1 (en) * 2001-03-08 2009-09-03 Microsoft Corporation Declarative pinning
US7921143B2 (en) 2001-03-08 2011-04-05 Microsoft Corporation Declarative pinning
US7882158B2 (en) 2001-03-08 2011-02-01 Microsoft Corporation Declarative pinning
US20030005025A1 (en) * 2001-06-27 2003-01-02 Shavit Nir N. Load-balancing queues employing LIFO/FIFO work stealing
US7103887B2 (en) 2001-06-27 2006-09-05 Sun Microsystems, Inc. Load-balancing queues employing LIFO/FIFO work stealing
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
US20040073764A1 (en) * 2002-07-31 2004-04-15 Bea Systems, Inc. System and method for reinforcement learning and memory management
US7039644B2 (en) * 2002-09-17 2006-05-02 International Business Machines Corporation Problem determination method, system and program product
US20040054695A1 (en) * 2002-09-17 2004-03-18 International Business Machines Corporation Problem determination method, system and program product
US20040181562A1 (en) * 2003-03-13 2004-09-16 Piotr Findeisen System and method for determining deallocatable memory in a heap
US20040181782A1 (en) * 2003-03-13 2004-09-16 Piotr Findeisen System and method for optimizing memory usage by locating lingering objects
US20050081190A1 (en) * 2003-09-30 2005-04-14 International Business Machines Corporation Autonomic memory leak detection and remediation
US7237085B2 (en) * 2004-05-28 2007-06-26 Oracle International Corporation Architecture for a scalable heap analysis tool
US7376684B2 (en) 2004-06-04 2008-05-20 International Business Machines Corporation Efficient parallel bitwise sweep during garbage collection
US7149870B2 (en) 2004-06-04 2006-12-12 International Business Machines Corporation Assigning sections within a memory heap for efficient garbage collection of large objects
US7370162B2 (en) 2004-06-04 2008-05-06 International Business Machines Corporation Free item distribution among multiple free lists during garbage collection for more efficient object allocation
US20050273568A1 (en) * 2004-06-04 2005-12-08 International Business Machines Corporation Free item distribution among multiple free lists during garbage collection for more efficient object allocation
US20080215648A1 (en) * 2004-06-04 2008-09-04 International Business Machines Corporation Efficient parallel bitwise sweep during garbage collection
US20050273567A1 (en) * 2004-06-04 2005-12-08 International Business Machines Corporation Assigning sections within a memory heap for efficient garbage collection of large objects
US20070073793A1 (en) * 2004-06-04 2007-03-29 Blandy Geoffrey O Free item distribution among multiple free lists during garbage collection for more efficient object allocation
US7814130B2 (en) 2004-06-04 2010-10-12 International Business Machines Corporation Efficient parallel bitwise sweep during garbage collection
US7149866B2 (en) 2004-06-04 2006-12-12 International Business Machines Corporation Free item distribution among multiple free lists during garbage collection for more efficient object allocation
US7299384B1 (en) 2004-08-17 2007-11-20 Symantec Operating Corporation Fixing prematurely freed objects
US20060212852A1 (en) * 2005-03-16 2006-09-21 Jinwoo Hwang Methods, systems and computer program products for detecting memory leaks
US20060253845A1 (en) * 2005-05-03 2006-11-09 International Business Machines Corporation Method and apparatus for determining leaks in a Java heap
US7870170B2 (en) * 2005-05-03 2011-01-11 International Business Machines Corporation Method and apparatus for determining leaks in a Java heap
US8229979B2 (en) * 2006-04-28 2012-07-24 Sap Ag Method and system for inspecting memory leaks
US20070255775A1 (en) * 2006-04-28 2007-11-01 Sap Ag Method and system for inspecting memory leaks
US20080005281A1 (en) * 2006-06-29 2008-01-03 Microsoft Corporation Error capture and reporting in a distributed computing environment
US20090125515A1 (en) * 2007-11-12 2009-05-14 Oliver Goetz String pooling
US8015168B2 (en) * 2007-11-12 2011-09-06 Sap Ag String pooling
US8775923B1 (en) * 2011-09-26 2014-07-08 Google Inc. Web page restoration
US10558566B2 (en) * 2015-04-16 2020-02-11 Microsoft Technology Licensing, Llc Garbage collection of non-pinned objects within heap
US20160306739A1 (en) * 2015-04-16 2016-10-20 Microsoft Technology Licensing, Llc Garbage collection of non-pinned objects within heap
US11645199B2 (en) 2015-06-30 2023-05-09 Samsung Electronics Co., Ltd. Storage device and garbage collection method thereof
US10719438B2 (en) 2015-06-30 2020-07-21 Samsung Electronics Co., Ltd. Storage device and garbage collection method thereof
US20170083298A1 (en) * 2015-09-23 2017-03-23 Microsoft Technology Licensing, Llc Resilient format for distribution of ahead-of-time compiled code components
US10203970B2 (en) * 2015-10-30 2019-02-12 Cisco Technology, Inc. Dynamic configuration of native functions to intercept
US20170123818A1 (en) * 2015-10-30 2017-05-04 AppDynamics, Inc. Dynamic Configuration of Native Functions to Intercept
US10824612B2 (en) 2017-08-21 2020-11-03 Western Digital Technologies, Inc. Key ticketing system with lock-free concurrency and versioning
US11055266B2 (en) 2017-08-21 2021-07-06 Western Digital Technologies, Inc. Efficient key data store entry traversal and result generation
US11210211B2 (en) 2017-08-21 2021-12-28 Western Digital Technologies, Inc. Key data store garbage collection and multipart object management
US11210212B2 (en) 2017-08-21 2021-12-28 Western Digital Technologies, Inc. Conflict resolution and garbage collection in distributed databases

Similar Documents

Publication Publication Date Title
US6434575B1 (en) Method of instrumenting garbage collection generating a trace file making a single pass analysis of object heap
US6226761B1 (en) Post dump garbage collection
US7249235B2 (en) Architecture for a scalable and user-extensible heap dump analysis tool
US7707555B2 (en) Interactive debugging system with debug data base system
US5900001A (en) Method and apparatus for optimizing exact garbage collection using a bifurcated data structure
US6038572A (en) Method and apparatus for localizing nodes in a garbage collected carded heap
US6098080A (en) Computer system, program product and method of collecting interned data with a mark sweep collector
US5920876A (en) Performing exact garbage collection using bitmaps that identify pointer values within objects
US5903900A (en) Method and apparatus for optimizing exact garbage collection of array nodes in a carded heap
US6795836B2 (en) Accurately determining an object's lifetime
US5915255A (en) Method and apparatus for referencing nodes using links
US5911144A (en) Method and apparatus for optimizing the assignment of hash values to nodes residing in a garbage collected heap
Hosking et al. Protection traps and alternatives for memory management of an object-oriented language
US20030033498A1 (en) Computer system with heap and card table
US7100003B2 (en) Method and apparatus for generating data for use in memory leak detection
US20040111707A1 (en) Debugger for multiple processors and multiple debugging types
US20040162861A1 (en) Parallel non-contiguous allocation and card parsing
US20060242635A1 (en) Method and system for optimizing array sizes in a JAVA virtual machine
US6951011B1 (en) Diagnostic method and article for identifying significant events
US7444484B2 (en) Method and system for determining memory usage of a heap
US8176286B2 (en) Memory recycling in computer systems
US7162605B2 (en) Method and system for obtaining memory usage information for a heap when a peak live count is updated
US7237085B2 (en) Architecture for a scalable heap analysis tool
US6944637B2 (en) Reduced size objects headers
US5394545A (en) System for determination and display of memory used, dedicated, and shared by a process at a particular time

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BERRY, ROBERT F.;BRYANT, RAYMOND M.;GU, WEIMING;AND OTHERS;REEL/FRAME:009584/0212;SIGNING DATES FROM 19981030 TO 19981111

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

REMI Maintenance fee reminder mailed
FPAY Fee payment

Year of fee payment: 12

SULP Surcharge for late payment

Year of fee payment: 11