IP Library Granted Patent US 8,782,610
Granted Patent B2
US 8,782,610 · App. 13/969,004 · Granted Jul 15, 2014

Method of tracing object allocation site in program, as well as computer system and computer program therefor

Inventors: Rei Odaira (Kanagawa, JP); Kazunori Ogata (Kanagawa, JP)
Assignee: International Business Machines Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,782,610
App. No.
13/969,004
Granted
Jul 15, 2014
Kind
B2
Abstract

A data structure of a run-time object having a hash value field. The data structure allows an object allocation site to be traced from the run-time object, the object allocation site being a site in a program allocating the run-time object. A method for allowing an object allocation site to be traced from a run-time object includes embedding a value corresponding to the object allocation site in the program. A hash-value field includes the embedded value and the object identifier, and the tracing is performed by identifying the object allocation site that corresponds to the embedded value. A computer system for tracing an object allocation site includes a memory that stores the run-time object; an acquirer that acquires the value from a hash value field; and an identification unit that identifies the object allocation site that corresponds to the acquired value.

Claims (44)

1. A computer implemented method for tracing an object allocation site from a run-time object, the method comprising:

allocating in a memory, from an object allocation site, a run-time object having a hash-value field comprising a hash value identifying the run-time object from among other run-time objects of a class, wherein the object allocation site is a site in a program allocating the run-time object;

embedding into the hash-value field as at least a part of the hash value identifying the run-time object from among other run-time objects of a class, in response to allocating the run-time object, an object allocation site identifier representing at least one of a line number and a relative position within the program of the object allocation site;

acquiring the hash value from the hash-value field;

generating a first value that is unrelated to the object allocation site;

storing the first value as a first component of the hash value;

recording, into a first correspondence table in response to generating the first value, a correspondence between the first value and object allocation site identifier;

obtaining, from the first correspondence table, the correspondence between the first value and the hash value, and information for identifying the object allocation site that corresponds to the first value, thus identifying the object allocation site that corresponds to the first value; and

identifying, in response to the acquiring and based on the first value and the correspondence, the object allocation site.

2. The method according to claim 1 , wherein the generating the first value is based upon a binary tree structure of the first correspondence table.

3. The method according to claim 2 , wherein:

the binary tree structure shows a correspondence relationship between the first value and an allocation site that corresponds to the first value;

each bit of the first value indicates a branch of the binary tree structure of the first correspondence table; and

an indication of the object allocation site is stored as at least one node of the binary tree structure, the indication of the object allocation site being otherwise unrelated to the object allocation site.

4. The method according to claim 1 , wherein:

the identifying is based upon a second correspondence table that records a correspondence between a second value that is included in the hash-value field of a second run-time object, and the allocation site that corresponds to the second value, thus identifying the allocation site that corresponds to the second value.

5. A storage device having tangibly stored thereon or therein a computer program executable in a computer, the computer program, when executed, causing the computer to perform the method for tracing an object allocation site according to claim 1 .

6. A computer implemented method for allowing an object allocation site to be traced from a run-time object, the method comprising:

allocating in a memory, from an object allocation site within a program, a run-time object having a hash-value field comprising a hash value identifying the run-time object from among other run-time objects of a class, wherein the object allocation site is a site in a program allocating the run-time object; and

embedding into the hash-value field as at least a part of the hash value identifying the run-time object from among other run-time objects of a class, in response to allocating the run-time object, an object allocation site identifier representing at least one of a line number and a relative position within the program of the object allocation site;

replacing the object allocation site identifier in the hash-value field with a calculated value, the calculated value comprising a first value being unrelated to the object allocation site and the calculated value further comprising an allocated object identifier, separate from the first value, the allocated object identifier uniquely identifying objects allocated by the object allocation site; and

creating a correspondence table storing a correspondence between the first value and the object allocation site.

7. The method according to claim 6 , further comprising:

allocating a first bit length to the first value and allocating a second bit length to the allocated object identifier based upon a number of run-time objects allocated in the memory from the same object allocation site,

wherein the replacing the object allocation site identifier in the hash-value field comprises replacing the object allocation site identifier in the hash-value field with a combination of the calculated value having the first bit length and the allocated object identifier having the second bit length.

8. The method according to claim 7 , further comprising determining that at least part of the bits of the allocated object identifier matches a predetermined bit pattern, and wherein the allocating further comprises changing the first bit length and the second bit length in response to determining that at least part of the bits of the allocated object identifier matches the predetermined bit pattern.

9. The method according to claim 6 , wherein the memory is a heap space of the memory, the method further comprising scanning the heap space, finding a value of the hash-value field of a run-time object not being used, and using the value of the hash-value field of the run-time object not being used for a new run-time object.

10. The method according to claim 9 , wherein the scanning is performed through garbage collection.

11. The method according to claim 6 , wherein a bit length allocated to the hash value is variable.

12. The method according to claim 6 , wherein the hash-value field is in an object header of the run-time object.

13. A storage device having tangibly stored thereon or therein a computer program executable in a computer, the computer program, when executed, causing the computer to perform the method for allowing an object allocation site to be traced according to claim 6 .

14. A computer system for tracing an object allocation site from a run-time object, the computer system comprising:

a memory that stores the run-time object;

an allocation unit configured to:

allocate in the memory, from an object allocation site, a run-time object having a hash-value field comprising a hash value identifying the run-time object from among other run-time objects of a class, wherein the object allocation site is a site in a program allocating the run-time object; and

embed into the hash-value field as at least a part of the hash value identifying the run-time object from among other run-time objects of a class, in response to allocating the run-time object, an object allocation site identifier representing at least one of a line number and a relative position within the program of the object allocation site;

an acquirer configured to acquire the hash value from the hash-value field; and

an identification unit configured to:

generate a first value that is unrelated to the object allocation site;

store the first value as a first component of the hash value;

record, into a first correspondence table in response to generating the first value, a correspondence between the first value and object allocation site identifier;

obtain, from the first correspondence table, the correspondence between the first value and the hash value, and information for identifying the object allocation site that corresponds to the first value, thus identifying the object allocation site that corresponds to the first value; and

identify, in response to an allocation in the memory, the object allocation site.

15. A storage device having tangibly stored thereon or therein a computer program executable in a computer, which computer program, when executed, causes the computer to function as the computer system for tracing an object allocation site according to claim 14 .

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE ADD ASSIGNEE KAZUNORI OGATA PREVIOUSLY RECORDED ON REEL 031027 FRAME 0375. ASSIGNOR(S) HEREBY CONFIRMS THE EXECUTED DECLARATION FOR UTILITY APPLICATION USING APPLICATION DATA SHEET AND ASSIGNMENT. Recorded Aug 21, 2013
From: OGATA, KAZUNORI
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 031058/0389 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2013
From: ODAIRA, REI
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 031027/0375 →
Priority Claims (1)
JP 2009-49727 · Mar 3, 2009 · national
Continuity (2)
Continuation 12715703 · Mar 2, 2010
Related Publication 20130332909A1 · Dec 12, 2013