IP Library Granted Patent US 11,099,982
Granted Patent B2
US 11,099,982 · App. 13/077,619 · Granted Aug 24, 2021

NUMA-aware garbage collection

Inventors: Antonios Printezis (Burlington, MA); Igor Veresov (Santa Clara, CA); Paul Henry Hohensee (Nashua, NH); John Coomes (Santa Cruz, CA)
Assignee: ORACLE INTERNATIONAL CORPORATION
G06F12/0276G06F12/0253G06F2212/2542
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 11,099,982
App. No.
13/077,619
Granted
Aug 24, 2021
Kind
B2
Abstract

Methods and systems for garbage collection are described. In some embodiments, Garbage collector threads may maximize local accesses and minimize remote access by copying Young objects and Old objects differently. When copying a Young object, a garbage collector thread may determine the lgroup of the pool that contains the object and copy the object to a pool of the same lgroup. The garbage collector thread may spread Old objects among lgroups by copying Old objects to pools of the same lgroup as the respective garbage collector thread. Additional methods and systems are disclosed.

Claims (41)

1. A non-transitory machine-readable medium comprising instructions, which when executed by one or more processors, cause the one or more processors to perform the following operations:

identifying, by a garbage collector thread, an object to be copied from a first memory region associated with a first locality group (lgroup) among a plurality of lgroups, the garbage collector thread being associated with a second lgroup, among the plurality of lgroups, associated with a second memory region different than the first memory region;

determining whether the object is a young object or an old object;

responsive to determining that the object is a young object:

copying the object from the first memory region to a different space in the same first memory region associated with the first lgroup;

responsive to determining that the object is an old object:

copying the object from the first memory region to a space in the second memory region associated with the second lgroup.

2. The medium of claim 1 , wherein the object is determined to be a young object or an old object based on a period of time since a last access to the object.

3. The medium of claim 1 , wherein the object is determined to be a young object or an old object based on a period of time since creation of the object.

4. The medium of claim 1 , wherein copying the object from the first memory region to the different space in the same first memory region comprises copying the object to a survivor region of the first memory region and/or a young objects region of the first memory region.

5. The medium of claim 1 , wherein copying the object from the memory to the space in the second memory comprises copying the object to an old objects region in the second memory region.

6. The medium of claim 1 , wherein the first memory region corresponds to a respective first set of pools associated with the first lgroup, wherein the second memory corresponds to a respective second set of pools associated with the second lgroup, and wherein the object is copied as part of a garbage collection process.

7. The medium of claim 1 , wherein the operations further comprise responsive to determining that objects are not evenly spread across memory regions associated with different lgroups, copying one or more additional objects to the memory regions associated with the different lgroups using a round-robin process.

8. A system comprising:

at least one device including a hardware processor;

the system being configured to perform operations comprising:

identifying, by a garbage collector thread, an object to be copied from a first memory region associated with a first locality group (lgroup) among a plurality of lgroups, the garbage collector thread corresponding to a second lgroup, among the plurality of lgroups, associated with a second memory region different than the first memory region;

determining whether the object is a young object or an old object;

responsive to determining that the object is a young object:

copying the object from the first memory region to a different space in the same first memory region associated with the first lgroup;

responsive to determining that the object is an old object:

copying the object from the first memory region to a space in the second memory region associated with the second lgroup.

9. The system of claim 8 , wherein the object is determined to be a young object or an old object based on a period of time since a last access to the object.

10. The system of claim 8 , wherein the object is determined to be a young object or an old object based on a period of time since creation of the object.

11. The system of claim 8 , wherein copying the object from the first memory region to the different space in the same first memory region comprises copying the object to a survivor region of the first memory region and/or a young objects region of the first memory region.

12. The system of claim 8 , wherein copying the object from the memory to the space in the second memory comprises copying the object to an old objects region in the second memory region.

13. The system of claim 8 , wherein the first memory region corresponds to a respective first set of pools associated with the first lgroup, wherein the second memory corresponds to a respective second set of pools associated with the second lgroup, and wherein the object is copied as part of a garbage collection process.

14. The system of claim 8 , wherein the operations further comprise responsive to determining that objects are not evenly spread across memory regions associated with different lgroups, copying one or more additional objects to the memory regions associated with the different lgroups using a round-robin process.

15. A method comprising:

identifying, by a garbage collector thread, an object to be copied from a first memory region associated with a first locality group (lgroup) among a plurality of lgroups, the garbage collector thread corresponding to a second lgroup, among the plurality of lgroups, associated with a second memory region different than the first memory region;

determining whether the object is a young object or an old object;

responsive to determining that the object is a young object:

copying the object from the first memory region to a different space in the same first memory region associated with the first lgroup;

responsive to determining that the object is an old object:

copying the object from the first memory region to a space in the second memory region associated with the second lgroup;

wherein the method is performed by at least one device including a hardware processor.

16. The method of claim 15 , wherein the object is determined to be a young object or an old object based on a period of time since a last access to the object.

17. The method of claim 15 , wherein the object is determined to be a young object or an old object based on a period of time since creation of the object.

18. The method of claim 15 , wherein copying the object from the first memory region to the different space in the same first memory region comprises copying the object to a survivor region of the first memory region and/or a young objects region of the first memory region.

19. The method of claim 15 , wherein copying the object from the memory to the space in the second memory comprises copying the object to an old objects region in the second memory region.

20. The method of claim 15 , wherein the operations further comprise responsive to determining that objects are not evenly spread across memory regions associated with different lgroups, copying one or more additional objects to the memory regions associated with the different lgroups using a round-robin process.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2011
From: PRINTEZIS, ANTONIOS; VERESOV, IGOR; HOHENSEE, PAUL; COOMES, JOHN
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 026058/0300 →
Continuity (1)
Related Publication 20120254266A1 · Oct 4, 2012