IP Library Granted Patent US 7,890,711
Granted Patent B2
US 7,890,711 · App. 11/787,933 · Granted Feb 15, 2011

Methods, apparatus, and program products for improved finalization

Assignee: Oracle America, Inc.
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 7,890,711
App. No.
11/787,933
Granted
Feb 15, 2011
Kind
B2
Abstract

Apparatus, methods, and computer program products are disclosed that improve management of a dynamic memory area. One aspect is a method that reclaims memory referenced by a finalizable-object that has been instantiated from a class definition that incorporates at least one parent class and one or more class-extensions into a class hierarchy. The method includes marking for retention a related memory reachable from a reference field of the finalizable-object, and adding the finalizable-object to a finalization set for subsequent invocation of a non-trivial finalize-method. The method also determines whether the portion of the finalizable-object that includes the reference field to the related memory is a class-extension that has a finalizer-free characteristic and conditions the marking for retention on that determination. Thus, a portion the finalizable-object's related memory can be more quickly reclaimed from a dynamic memory area.

Claims (41)

1. A computer controlled method for reclaiming memory referenced by a finalizable-object, said finalizable-object having been instantiated from a class definition incorporating at least one parent class and one or more class-extensions into a class hierarchy; the method comprising marking for retention a related memory reachable from a reference field of said finalizable-object, and adding said finalizable-object to a finalization set for subsequent invocation of a non-trivial finalize-method; wherein the improvement comprises:

iterating from an ultimate class-extension of said finalizable-object toward a root class of said finalizable-object:

selecting an iterated class-extension, said class-extension corresponding to a portion of said finalizable-object that includes said reference field;

determining whether said class-extension has a finalizer-free characteristic;

in response to determining that said class-extension has a finalizer-free characteristic, marking said related memory for reclamation so that the related memory can be reclaimed by a garbage collection process before an invocation of finalize methods, wherein for any class-extension before a first class-extension without a finalizer-free characteristic, said related memory is marked for reclamation; and

in response to determining that said class-extension does not have a finalizer-free characteristic, marking said related memory for retention, wherein said related memory cannot be reclaimed until after the invocation of said non-trivial finalize-method.

2. The computer controlled method of claim 1 , wherein conditionally performing the marking for retention further comprises:

determining whether said related memory is strongly reachable solely through said reference field; and

reclaiming said related memory.

3. The computer controlled method of claim 1 , wherein selecting, determining, and conditionally performing are applied to each of a first collection of class-extensions from said one or more class-extensions of said finalizable-object.

4. The computer controlled method of claim 3 , wherein the method completes responsive to the determination that said class-extension does not have said finalizer-free characteristic.

5. The computer controlled method of claim 1 , wherein said class hierarchy comprises a set of hierarchically contiguous class-extensions that have said finalizer-free characteristic, said set of hierarchically contiguous class-extensions including an ultimate class-extension; said set of hierarchically contiguous class-extensions defining a plurality of reference fields in said finalizable-object and said plurality of reference fields including said reference field.

6. The method of claim 1 , wherein the method further comprises:

upon determining that a class-extension does not have a finalizer-free characteristic, while iterating from the class-extension through any remaining class-extensions toward the root class of said finalizable object, for each remaining class-extension,

marking memory related to the remaining class-extension for retention without determining whether the remaining class-extension has a finalizer-free characteristic.

7. A computing apparatus configured to reclaim memory referenced by a finalizable-object, said finalizable-object having been instantiated from a class definition incorporating at least one parent class and one or more class-extensions into a class hierarchy; the apparatus comprising a memory marking logic configured to mark for retention a related memory reachable from a reference field of said finalizable-object, and a finalization-interface logic configured to add said finalizable-object to a finalization set for subsequent invocation of a non-trivial finalize-method; wherein the improvement apparatus to the finalization-interface logic comprises:

an iteration logic configured to iterate from the ultimate class-extension of said finalizable-object towards the root class of said finalizable-object:

select an iterated class-extension, said class-extension corresponding to a portion of said finalizable-object that includes said reference field;

determine whether said class-extension selected by the selection logic has a finalizer-free characteristic;

in response to determining that said class-extension has a finalizer-free characteristic, mark said related memory for reclamation so that the related memory can be reclaimed by a garbage collection process before an invocation of finalize methods, wherein for any class-extension before a first class-extension without a finalizer-free characteristic, said related memory is marked for reclamation; and

in response to determining that said class-extension does not have a finalizer-free characteristic, mark said related memory for retention, wherein said related memory cannot be reclaimed until after the invocation of said non-trivial finalize-method.

8. The computing apparatus of claim 7 , wherein the conditional marking logic further comprises:

a now-reclaimable memory determination logic configured to determine whether said related memory is strongly reachable solely through said reference field; and

an immediate memory reclamation logic configured to reclaim said related memory responsive to the now-reclaimable memory determination logic.

9. The computing apparatus of claim 7 , wherein the selection logic, the determination logic, and the conditional marking logic operate on each of a first collection of class-extensions from said one or more class-extensions of said finalizable-object.

10. The computing apparatus of claim 9 , further comprising a completion logic responsive to determination by the determination logic that said class-extension does not have said finalizer-free characteristic; the completion logic configured to cause the memory marking logic to operate on said one or more class-extensions that are not members of the first collection of class-extensions.

11. The computing apparatus of claim 7 , wherein said class hierarchy comprises a set of hierarchically contiguous class-extensions that have said finalizer-free characteristic, said set of hierarchically contiguous class-extensions including an ultimate class-extension; said set of hierarchically contiguous class-extensions defining a plurality of reference fields in said finalizable-object and said plurality of reference fields including said reference field.

12. The computing apparatus of claim 7 , wherein the computing apparatus is at least one selected from the group consisting of a component of a vehicle, a kitchen appliance, a sound device, a video device, a display device, a user interface device, a network device, a storage system, a time-keeping device, a control system, a home security system, and a manufacturing apparatus.

13. A computer program product comprising:

a computer-usable data medium providing instructions that, when executed by a computer, cause said computer to perform a method for reclaiming memory referenced by a finalizable-object, said finalizable-object having been instantiated from a class definition incorporating at least one parent class and one or more class-extensions into a class hierarchy; the product comprising marking for retention a related memory reachable from a reference field of said finalizable-object, and adding said finalizable-object to a finalization set for subsequent invocation of a non-trivial finalize-method; wherein the improvement comprises:

iterating from the ultimate class-extension of said finalizable-object towards the root class of said finalizable-object:

selecting an iterated class-extension, said class-extension corresponding to a portion of said finalizable-object that includes said reference field;

determining whether said class-extension has a finalizer-free characteristic;

in response to determining that said class-extension has a finalizer-free characteristic, marking said related memory for reclamation so that the related memory can be reclaimed by a garbage collection process before an invocation of finalize methods, wherein for any class-extension before a first class-extension without a finalizer-free characteristic, said related memory is marked for reclamation; and

in response to determining that said class-extension does not have a finalizer-free characteristic, marking said related memory for retention, wherein said related memory cannot be reclaimed until after the invocation of said non-trivial finalize-method.

14. The computer program product of claim 13 , wherein conditionally performing the marking for retention further comprises:

determining whether said related memory is strongly reachable solely through said reference field; and

reclaiming said related memory.

15. The computer program product of claim 13 , wherein selecting, determining, and conditionally performing are applied to each of a first collection of class-extensions from said one or more class-extensions of said finalizable-object.

16. The computer program product of claim 15 , wherein the product completes responsive to the determination that said class-extension does not have said finalizer-free characteristic.

17. The computer program product of claim 13 , wherein said class hierarchy comprises a set of hierarchically contiguous class-extensions that have said finalizer-free characteristic and said set of hierarchically contiguous class-extensions including an ultimate class-extension; said set of hierarchically contiguous class-extensions defining a plurality of reference fields in said finalizable-object and said plurality of reference fields including said reference field.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037311/0056 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2007
From: PRINTEZIS, ANTONIOS; KESSLER, PETER B.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 019271/0679 →
Continuity (1)
Related Publication 20080263295A1 · Oct 23, 2008