Browse Prior Art Database

Method and System for Detecting Scan Miss during Garbage Collection (GC)

IP.com Disclosure Number: IPCOM000202388D
Publication Date: 2010-Dec-15
Document File: 5 page(s) / 97K

Publishing Venue

The IP.com Prior Art Database

Abstract

A method and system for detecting scan miss during Garbage Collection (GC) is disclosed.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 54% of the total text.

Page 01 of 5

Method and System for Detecting Scan Miss during Garbage Collection (GC) Disclosed is a method and system for detecting scan miss during Garbage Collection

(GC). Data dumps reported from application crashes are analyzed to obtain invalid

references of objects and the invalid references along with corresponding parent

references are provided to the Java* Virtual Machine (JVM). The invalid references and

the corresponding parent references are used to track objects in the heap that are not

scanned during a GC cycle.

When an application crashes due to object corruption, data dumps that are reported are

analyzed to determine invalid references to an object as illustrated in Fig. 1. Further, a

parent reference corresponding to the invalid reference is also determined. For

example, the invalid reference may be a string buffer and parent reference may be a

thread. Thereafter, the invalid reference and the parent reference are provided as input

to the JVM in order to reduce the level of tracking required for detecting scan misses

during a GC cycle.

At the beginning of a sweep phase of the GC cycle, the method and system disclosed

herein builds a list of objects that were not marked during the mark phase of the GC

cycle to create an Un-scanned Object List as illustrated in Fig. 1. The list is an ordered

pair of address of the object and the cycle number of a GC cycle. An exemplary

structure of the un-scanned object list is as follows: struct Unscanned

_List

_array of

collected in garbage collection cycle no. realloc

_

string buffer addresses
next; \\ create a list which can be maintained for 'n' garbage collection cycles

}

In other words, address range of string buffer objects that have been collected during a

current GC cycle or address range of un-scanned objects is created.

{
gc no. collected

//

address of string buffers that were

array;

//address of string buffers that were reallocated exactly on the collected

1


Page 02 of 5

(This page contains 00 pictures or other non-text object)

Figure 1

Subsequent, to the GC cycles, when the application resumes execution, the following

steps are performed for every xfield operation on a string buffer that is a part of a thread

object as illustrated in the flowchart in Fig. 2:
I...