IP Library Granted Patent US 7,171,527
Granted Patent B2
US 7,171,527 · App. 10/866,046 · Granted Jan 30, 2007

Method and apparatus for keeping track of memory usage for tasks in a shared heap

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,171,527
App. No.
10/866,046
Granted
Jan 30, 2007
Kind
B2
Abstract

One embodiment of the present invention provides a system that facilitates keeping track of memory usage of tasks in a shared heap without performing a full garbage-collection operation. The system operates by determining a memory usage by each task in a young generation of the shared heap. Once the memory usage for each task has been determined, the system then adds the memory usage for each task in the young generation of the shared heap to a global memory usage for each task (obtained during a preceding full garbage-collection operation) to produce an actual memory usage for each task.

Claims (51)

1. A method for keeping track of memory usage of tasks in a shared heap without performing a full garbage-collection operation, the method comprising:

determining a memory usage by each task in a young generation of the shared heap; and

adding the memory usage for each task in the young generation of the shared heap to a global memory usage for each task obtained during a preceding full garbage-collection operation to produce an actual memory usage for each task.

2. The method of claim 1 , wherein determining the memory usage for each task in the young generation of the shared heap involves performing a young generation garbage-collection operation on the young generation of the shared heap, wherein the memory usage for each task in the young generation of the shared heap is determined when live objects in the young generation of the shared heap are garbage collected.

3. The method of claim 2 , wherein performing the young generation garbage-collection operation involves:

performing a marking operation to mark live objects in the young generation of the shared heap; and

for each object in the young generation of the shared heap,

identifying a task that owns the object,

if the object has been marked by a preceding marking operation, promoting the object to an old generation of the shared heap, and

adding the memory usage for each object to the global memory usage for the corresponding owning task.

4. The method of claim 3 , wherein identifying the task that owns the object involves finding an object that is a boundary marker, wherein a boundary marker acts as a delimiter separating objects belonging to different tasks, wherein the object is owned by the task that is identified by the last boundary marker preceding the object.

5. The method of claim 3 , wherein determining the task that owns the object further involves examining a header of the object for an identifier that identifies the task.

6. The method of claim 5 , wherein the identifier is only present in objects in the young generation of the shared heap, and is removed when the object is promoted to the old generation of the shared heap.

7. The method of claim 3 , wherein determining the task that owns the object further involves examining a card table to determine ownership, wherein each task has a separate card table.

8. The method of claim 1 , wherein the shared heap is located within a memory-constrained computing device.

9. The method of claim 1 , wherein the shared heap is located within a platform-independent virtual machine.

10. The method of claim 9 , wherein the platform-independent virtual machine is a JAVA Virtual Machine.

11. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for keeping track of memory usage of tasks in a shared heap without performing a full garbage-collection operation, the method comprising:

determining a memory usage by each task in a young generation of the shared heap; and

adding the memory usage for each task in the young generation of the shared heap to a global memory usage for each task obtained during a preceding full garbage-collection operation to produce an actual memory usage for each task.

12. The computer-readable storage medium of claim 11 , wherein determining the memory usage for each task in the young generation of the shared heap involves performing a young generation garbage-collection operation on the young generation of the shared heap, wherein the memory usage for each task in the young generation of the shared heap is determined when live objects in the young generation of the shared heap are garbage collected.

13. The computer-readable storage medium of claim 12 , wherein performing the young generation garbage-collection operation involves:

performing a marking operation to mark live objects in the young generation of the shared heap; and

for each object in the young generation of the shared heap,

identifying a task that owns the object,

if the object has been marked by a preceding marking operation, promoting the object to an old generation of the shared heap, and

adding the memory usage for each object to the global memory usage for the corresponding owning task.

14. The computer-readable storage medium of claim 13 , wherein identifying the task that owns the object involves finding an object that is a boundary marker, wherein a boundary marker acts as a delimiter separating objects belonging to different tasks, wherein the object is owned by the task that is identified by the last boundary marker preceding the object.

15. The computer-readable storage medium of claim 13 , wherein determining the task that owns the object further involves examining a header of the object for an identifier that identifies the task.

16. The computer-readable storage medium of claim 15 , wherein the identifier is only present in objects in the young generation of the shared heap, and is removed when the object is promoted to the old generation of the shared heap.

17. The computer-readable storage medium of claim 13 , wherein determining the task that owns the object further involves examining a card table to determine ownership, wherein each task has a separate card table.

18. The computer-readable storage medium of claim 11 , wherein the shared heap is located within a memory-constrained computing device.

19. The computer-readable storage medium of claim 11 , wherein the shared heap is located within a platform-independent virtual machine.

20. The computer-readable storage medium of claim 19 , wherein the platform-independent virtual machine is a JAVA Virtual Machine.

21. An apparatus for keeping track of memory usage of tasks in a shared heap without performing a full garbage-collection operation, comprising:

a memory utilization mechanism configured to determine a memory usage by each task in a young generation of the shared heap; and

a memory summation mechanism configured to add the memory usage for each task in the young generation of the shared heap to a global memory usage for each task obtained during a preceding full garbage-collection operation to produce an actual memory usage for each task.

22. The apparatus of claim 21 , wherein the memory utilization mechanism is further configured to perform a young generation garbage-collection operation on the young generation of the shared heap, wherein the memory usage for each task in the young generation of the shared heap is determined when live objects in the young generation of the shared heap are garbage collected.

23. The apparatus of claim 22 , wherein the memory utilization mechanism is further configured to:

perform a marking operation to mark live objects in the young generation of the shared heap; and

for each object in the young generation of the shared heap,

identify a task that owns the object,

promote the object to an old generation of the shared heap if the object has been marked by a preceding marking operation, and

add the memory usage for each object to the global memory usage for the corresponding owning task, if the object has been marked by the preceding marking operation.

24. The apparatus of claim 23 , wherein the memory utilization mechanism is further configured to find an object that is a boundary marker, wherein a boundary marker acts as a delimiter separating objects belonging to different tasks, wherein the object is owned by the task that is identified by the last boundary marker preceding the object.

25. The apparatus of claim 23 , wherein the memory utilization mechanism is further configured to examine a header of the object for an identifier that identifies the task.

26. The apparatus of claim 25 , wherein the identifier is only present in objects in the young generation of the shared heap, and is removed when the object is promoted to the old generation of the shared heap.

27. The apparatus of claim 23 , wherein the memory utilization mechanism is further configured to examine a card table to determine ownership of the task, wherein each task has a separate card table.

28. The apparatus of claim 21 , wherein the shared heap is located within a memory-constrained computing device.

29. The apparatus of claim 21 , wherein the shared heap is located within a platform-independent virtual machine.

30. The apparatus of claim 29 , wherein the platform-independent virtual machine is a JAVA Virtual Machine.

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 037302/0719 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 9, 2004
From: PLISS, OLEG A.; MATHISKE, BERND J.; LAM, IOI K.; NAGARAJAN, VIJAY G.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 015663/0534 →