IP Library Granted Patent US 8,725,982
Granted Patent B2
US 8,725,982 · App. 13/870,897 · Granted May 13, 2014

Garbage collection with memory quick release

Inventors: Gil Tene (Los Altos Hills, CA); Michael A. Wolf (San Francisco, CA)
Assignee: Azul Systems, 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 8,725,982
App. No.
13/870,897
Granted
May 13, 2014
Kind
B2
Abstract

Memory management includes identifying a region of virtual memory to be reclaimed, the region including an object that is currently located at an original virtual memory location, and the region being supported by at least a portion of a memory resource; relocating the object from the original virtual memory location to a target virtual memory location; releasing the portion of the memory resource so that the portion of memory resource can be reused; and after the portion of the memory resource is released, replacing a reference of the object that points to the original virtual memory location with a reference of the object that points to the target virtual memory location.

Claims (40)

1. A method of memory management, comprising:

identifying a region of virtual memory to be reclaimed, the region including an object that is currently located at an original virtual memory location, and the region being supported by at least a portion of a first memory resource;

relocating the object from the original virtual memory location to a target virtual memory location that is supported by at least a portion of a second memory resource, the second memory resource being different from the first memory resource;

releasing the portion of the first memory resource so that the portion of the first memory resource can be reused; and

after the portion of the first memory resource is released, replacing a first reference with a second reference, wherein the first reference references the original virtual memory location which was supported by the portion of the first memory resource that has been released, and the second reference references the target virtual memory location which is supported by the portion of the second memory resource, and wherein the second memory resource is different from the first memory resource.

2. The method of claim 1 , further comprising establishing a forwarding pointer that identifies the target virtual memory location to which the object is relocated.

3. The method of claim 2 , wherein replacing the first reference with the second reference is based at least in part on the forwarding pointer.

4. The method of claim 2 , wherein the forwarding pointer is stored outside the region of virtual memory to be reclaimed.

5. The method of claim 1 , wherein the region includes a page of virtual memory.

6. The method of claim 1 , further comprising replacing all references that point to the original virtual memory location with references that point to the target virtual memory location.

7. The method of claim 1 , wherein the first memory resource is physical memory.

8. The method of claim 1 , wherein the object is a live object.

9. The method of claim 1 , wherein relocating the object includes protecting the region of virtual memory to be reclaimed.

10. The method of claim 9 , wherein protecting the region of virtual memory to be reclaimed includes marking the region.

11. The method of claim 9 , wherein a garbage collection barrier triggers in the event the object is accessed after the region is protected.

12. The method of claim 11 , wherein the object is accessed at the original virtual memory address.

13. The method of claim 9 , wherein a garbage collection barrier triggers in the event the object is loaded from memory after the region is protected.

14. The method of claim 1 , further comprising redirecting an operation that references the object to the target virtual memory location.

15. The method of claim 14 , wherein redirecting the operation includes providing a forwarding pointer to the target virtual memory location.

16. A system comprising:

a memory comprising a first memory resource and a second memory resource, the second memory resource being different from the first memory resource; and

one or more processors coupled to the memory, configured to:

identify a region of virtual memory to be reclaimed, the region including an object that is currently located at an original virtual memory location, and the region being supported by at least a portion of the first memory resource;

relocate the object from the original virtual memory location to a target virtual memory location that is supported by at least a portion of the second memory resource;

release the portion of the first memory resource so that the portion of the first memory resource can be reused; and

after the portion of the first memory resource is released, replace a first reference with a second reference, wherein the first reference references the original virtual memory location which was supported by the portion of the first memory resource that has been released, and the second reference references the target virtual memory location which is supported by the portion of the second memory resource, and wherein the second memory resource is different from the first memory resource.

17. The system of claim 16 , wherein the one or more processors are further configured to establish a forwarding pointer that identifies the target virtual memory location to which the object is relocated.

18. The system of claim 17 , wherein to replace the first reference with the second reference is based at least in part on the forwarding pointer.

19. The system of claim 17 , wherein the forwarding pointer is stored outside the region of virtual memory to be reclaimed.

20. The system of claim 16 , wherein the region includes a page of virtual memory.

21. The system of claim 16 , wherein the one or more processors are further configured to replace all references to the object that points to the original virtual memory location with references of the object that point to the target virtual memory location.

22. The system of claim 16 , wherein the first memory resource is physical memory.

23. The system of claim 16 , wherein the object is a live object.

24. The system of claim 16 , wherein to relocate the object includes to protect the region of virtual memory to be reclaimed.

25. The system of claim 24 , wherein to protect the region of virtual memory to be reclaimed includes to mark the region.

26. The system of claim 24 , wherein a garbage collection barrier triggers in the event the object is accessed after the region is protected.

27. The system of claim 26 , wherein the object is accessed at the original virtual memory address.

28. The system of claim 24 , wherein a garbage collection barrier triggers in the event the object is loaded from memory after the region is protected.

29. The system of claim 16 , wherein the one or more processors are further configured to redirect an operation that references the object to the target virtual memory location.

30. The system of claim 29 , wherein to redirect the operation includes to provide a forwarding pointer to the target virtual memory location.

Assignments (7)
SECURITY INTEREST Recorded Dec 3, 2025
From: AZUL SYSTEMS, INC.
To: ARES CAPITAL CORPORATION, AS COLLATERAL AGENT
Reel/Frame 073828/0083 →
RELEASE OF SECURITY INTERESTS IN PATENTS RECORDED AT REEL/FRAME 052293/0121 Recorded Dec 3, 2025
From: GOLUB CAPITAL LLC, AS COLLATERAL AGENT
To: AZUL SYSTEMS, INC.
Reel/Frame 073466/0064 →
RELEASE OF SECURITY INTEREST Recorded Apr 2, 2020
From: SILICON VALLEY BANK
To: AZUL SYSTEMS, INC.
Reel/Frame 052293/0869 →
SECURITY INTEREST Recorded Apr 2, 2020
From: AZUL SYSTEMS, INC.
To: GOLUB CAPITAL LLC, AS COLLATERAL AGENT
Reel/Frame 052293/0121 →
RELEASE OF SECURITY INTEREST Recorded Feb 21, 2019
From: PARTNERS FOR GROWTH IV, L.P.
To: AZUL SYSTEMS, INC.
Reel/Frame 048411/0138 →
SECURITY INTEREST Recorded Mar 1, 2016
From: AZUL SYSTEMS, INC.
To: PARTNERS FOR GROWTH IV, L.P.
Reel/Frame 037959/0694 →
SECURITY INTEREST Recorded Feb 2, 2016
From: AZUL SYSTEMS, INC.
To: SILICON VALLEY BANK
Reel/Frame 037641/0665 →
Continuity (4)
Continuation 12082238 · Apr 8, 2008
Continuation In Part 11321694 · Dec 28, 2005
Provisional Application 60640383 · Dec 30, 2004
Related Publication 20130311741A1 · Nov 21, 2013