IP Library Granted Patent US 7,117,318
Granted Patent B1
US 7,117,318 · App. 10/701,388 · Granted Oct 3, 2006

Memory management

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 7,117,318
App. No.
10/701,388
Granted
Oct 3, 2006
Kind
B1
Abstract

A technique for managing an object in memory is disclosed. The technique comprises: assigning the object to an assigned frame wherein the object can be released when the assigned frame is released; detecting an attempt to place a reference to the object in an older frame, the older frame being older than the assigned frame; and reassigning the object to a reassignment frame that is at least as old as the older frame.

Claims (89)

1. A method for managing an object in memory, comprising:

assigning the object to an assigned frame wherein the object can be released when the assigned frame is released;

detecting an attempt to place a reference to the object in an older frame, the older frame being older than the assigned frame; and

reassigning the object to a reassignment frame that is at least as old as the older frame.

2. A method for managing an object in memory as recited in claim 1 , wherein the reassignment frame is the older frame.

3. A method for managing an object in memory as recited in claim 1 , wherein assigning the object to the assigned frame comprises associating a frame identifier with the object.

4. A method for managing an object in memory as recited in claim 1 , wherein assigning the object to the assigned frame comprises associating a frame identifier with a reference of the object.

5. A method for managing an object in memory as recited in claim 1 , wherein assigning the object to the assigned frame comprises associating a frame identifier with the object and detecting an attempt to place a reference to the object in an older frame is performed using the frame identifier.

6. A method for managing an object in memory as recited in claim 1 , wherein detecting an attempt to place a reference to the object in an older frame comprises comparing a first frame identifier associated with the object with a second frame identifier associated with the older frame.

7. A method for managing an object in memory as recited in claim 1 , wherein detecting an attempt to place a reference to the object in an older frame comprises comparing a first address associated with the object with a second address associated with the older frame.

8. A method for managing an object in memory as recited in claim 1 , wherein detecting an attempt to place a reference to the object in an older frame comprises determining whether the object is in stack memory or heap memory.

9. A method for managing an object in memory as recited in claim 1 , wherein detecting an attempt to place a reference to the object in an older frame comprises determining whether the object is in stack memory or heap memory by examining a distinguishing bit or a distinguishing set of bits.

10. A method for managing an object in memory as recited in claim 1 , wherein detecting an attempt to place a reference to the object in an older frame comprises determining whether the object is in stack memory or heap memory; and heap memory is uniquely identified by a heap frame identifier.

11. A method for managing an object in memory as recited in claim 1 , wherein reassigning the object to a reassignment frame that is at least as old as the older frame comprises recursively detecting whether the object references any younger object.

12. A method for managing an object in memory as recited in claim 1 , wherein reassigning the object to a reassignment frame that is at least as old as the older frame comprises recursively detecting whether the object references any younger object and reassigning any referenced younger object to the reassignment frame.

13. A method for managing an object in memory as recited in claim 1 , wherein reassigning the object to a reassignment frame comprises resetting a first frame identifier associated with the object to be the same as a second frame identifier associated with the reassignment frame.

14. A method for managing an object in memory as recited in claim 1 , wherein reassigning the object to a reassignment frame comprises moving the object into the reassignment frame.

15. A method for managing an object in memory as recited in claim 1 , wherein reassigning the object to a reassignment frame comprises moving the object into the reassignment frame and storing overflow in an overflow area associated with the reassignment frame.

16. A method for managing an object in memory as recited A claim 1 , wherein reassigning the object to a reassignment frame comprises expanding the reassignment frame and moving the object into the reassignment frame.

17. A method for managing an object in memory as recited in claim 1 , wherein reassigning the object to a reassignment frame comprises moving the object into the reassignment frame and updating a reference to the object.

18. A method for managing an object in memory as recited in claim 1 , wherein reassigning the object to a reassignment frame comprises moving the object into the reassignment frame and updating all references to the object.

19. A method for managing an object in memory as recited in claim 1 , wherein reassigning the object to a reassignment frame is assisted by a display.

20. A method for managing an object in memory as recited in claim 1 , wherein reassigning the object includes tracing reassigned space.

21. A method for managing an object in memory as recited in claim 1 , further comprises modifying an allocation site of the object.

22. A method for managing an object in memory as recited in claim 1 , further comprises modifying a frame creation site.

23. A method for managing an object in memory as recited in claim 1 , further comprises learning reassignment information.

24. A method for managing an object in memory as recited in claim 1 , further comprising performing thread-local garbage collection.

25. A method for managing an object in memory as recited in claim 1 , further comprising storing call path information associated with an allocation site of the object.

26. A method for managing an object in memory as recited in claim 1 , wherein detecting an attempt to place a reference to the object in an older frame is performed with hardware assist.

27. A computer program product for managing an object in memory, the computer program product being embodied in a tangible computer readable medium and comprising computer instructions for:

assigning the object to an assigned frame wherein the object can be released when the assigned frame is released;

detecting an attempt to place a reference to the object in an older frame, the older frame being older than the assigned frame;

reassigning the object to a reassignment frame that is at least as old as the older frame.

28. A computer program product for managing an object in memory as recited in claim 27 , wherein the reassignment frame is the older frame.

29. A computer program product as recited in claim 27 , wherein assigning the object to the assigned frame comprises associating a frame identifier with the object.

30. A computer program product as recited in claim 27 , wherein assigning the object to the assigned frame comprises associating a frame identifier with a reference of the object.

31. A computer program product as recited in claim 27 , wherein assigning the object to the assigned frame comprises associating a frame identifier with the object and detecting an attempt to place a reference to the object in an older frame is performed using the frame identifier.

32. A computer program product as recited in claim 27 , wherein detecting an attempt to place a reference to the object in an older frame comprises comparing a first frame identifier associated with the object with a second frame identifier associated with the older frame.

33. A computer program product as recited in claim 27 , wherein detecting an attempt to place a reference to the object in an older frame comprises comparing a first address associated with the object with a second address associated with the older frame.

34. A computer program product as recited in claim 27 , wherein detecting an attempt to place a reference to the object in an older frame comprises determining whether the object is in stack memory or heap memory.

35. A computer program product as recited in claim 27 , wherein detecting an attempt to place a reference to the object in an older frame comprises determining whether the object is in stack memory or heap memory by examining a distinguishing bit or a distinguishing set of bits.

36. A computer program product as recited in claim 27 , wherein detecting an attempt to place a reference to the object in an older frame comprises determining whether the object is in stack memory or heap memory; and heap memory is uniquely identified by a heap frame identifier.

37. A computer program product as recited in claim 27 , wherein reassigning the object to a reassignment frame that is at least as old as the older frame comprises recursively detecting whether the object references any younger object.

38. A computer program product as recited in claim 27 , wherein reassigning the object to a reassignment frame that is at least as old as the older frame comprises recursively detecting whether the object references any younger object and reassigning any referenced younger object to the reassignment frame.

39. A computer program product as recited in claim 27 , wherein reassigning the object to a reassignment frame comprises resetting a first frame identifier associated with the object to be the same as a second frame identifier associated with the reassignment frame.

40. A computer program product as recited in claim 27 , wherein reassigning the object to a reassignment frame comprises moving the object into the reassignment frame.

41. A computer program product as recited in claim 27 , wherein reassigning the object to a reassignment frame comprises moving the object into the reassignment frame and storing overflow in an overflow area associated with the reassignment frame.

42. A computer program product as recited in claim 27 , wherein reassigning the object to a reassignment frame comprises expanding the reassignment frame and moving the object into the reassignment frame.

43. A computer program product as recited in claim 27 , wherein reassigning the object to a reassignment frame comprises moving the object into the reassignment frame and updating a reference to the object.

44. A computer program product as recited in claim 27 , wherein reassigning the object to a reassignment frame comprises moving the object into the reassignment frame and updating all references to the object.

45. A computer program product as recited in claim 27 , wherein reassigning the object to a reassignment frame is assisted by a display.

46. A computer program product as recited in claim 27 , wherein reassigning the object includes tracing reassigned space.

47. A computer program product as recited in claim 27 , the computer program product further comprising instructions for modifying an allocation site of the object.

48. A computer program product as recited in claim 27 , the computer program product further comprising instructions for modifying a frame creation site.

49. A computer program product as recited in claim 27 , the computer program product further comprising instructions for learning reassignment information.

50. A computer program product as recited in claim 27 , the computer program product further comprising instructions for performing thread-local garbage collection.

51. A computer program product as recited in claim 27 , the computer program product further comprising instructions for storing call path information associated with an allocation site of the object.

52. A computer program product as recited in claim 27 , wherein detecting an attempt to place a reference to the object in an older frame is performed with hardware assist.

53. A system for managing an object, comprising:

a processor configured to:

assign the object to an assigned frame wherein the object can be released when the assigned frame is released;

detect an attempt to place a reference to the object in an older frame, the older frame being older than the assigned frame;

reassign the object to a reassignment frame that is at least as old as the older frame; and

a memory coupled to the processor, configured to provide the processor with instructions.

54. A system as recited in claim 53 , wherein the reassignment frame is the older frame.

55. A system as recited in claim 53 , wherein to assign the object to the assigned frame comprises to associate a frame identifier with the object.

56. A system as recited in claim 53 , wherein to assign the object to the assigned frame comprises to associate a frame identifier with a reference of the object.

57. A system as recited in claim 53 , wherein to assign the object to the assigned frame comprises to associate a frame identifier with the object and to detect an attempt to place a reference to the object in an older frame is performed using the frame identifier.

58. A system as recited in claim 53 , wherein to detect an attempt to place a reference to the object in an older frame comprises to compare a first frame identifier associated with the object with a second frame identifier associated with the older frame.

59. A system as recited in claim 53 , wherein to detect an attempt to place a reference to the object in an older frame comprises to compare a first address associated with the object with a second address associated with the older frame.

60. A system as recited in claim 53 , wherein to detect an attempt to place a reference to the object in an older frame comprises to determine whether the object is in stack memory or heap memory.

61. A system as recited in claim 53 , wherein to detect an attempt to place a reference to the object in an older frame comprises to determine whether the object is in stack memory or heap memory by examining a distinguishing bit or a distinguishing set of bits.

62. A system as recited in claim 53 , wherein to detect an attempt to place a reference to the object in an older frame comprises to determine whether the object is in stack memory or heap memory; and heap memory is uniquely identified by a heap frame identifier.

63. A system as recited in claim 53 , wherein to reassign the object to a reassignment frame that is at least as old as the older frame comprises to detect recursively whether the object references any younger object.

64. A system as recited in claim 53 , wherein to reassign the object to a reassignment frame that is at least as old as the older frame comprises to detect recursively whether the object references any younger object and reassigning any referenced younger object to the reassignment frame.

65. A system as recited in claim 53 , wherein to reassign the object to a reassignment frame comprises to reset a first frame identifier associated with the object to be the same as a second frame identifier associated with the reassignment frame.

66. A system as recited in claim 53 , wherein to reassign the object to a reassignment frame comprises to move the object into the reassignment frame.

67. A system as recited in claim 53 , wherein to reassign the object to a reassignment frame comprises to move the object into the reassignment frame and storing overflow in an overflow area associated with the reassignment frame.

68. A system as recited in claim 53 , wherein to reassign the object to a reassignment frame comprises to expand the reassignment frame and to move the object into the reassignment frame.

69. A system as recited in claim 53 , wherein to reassign the object to a reassignment frame comprises to move the object into the reassignment frame and to update a reference to the object.

70. A system as recited in claim 53 , wherein to reassign the object to a reassignment frame comprises to move the object into the reassignment frame and to update all references to the object.

71. A system as recited in claim 53 , wherein to reassign the object to a reassignment frame is assisted by a display.

72. A system as recited in claim 53 , wherein to reassign the object includes to trace reassigned space.

73. A system as recited in claim 53 , wherein the processor is further configured to modify an allocation site of the object.

74. A system as recited in claim 53 , wherein the processor is further configured to modify a frame creation site.

75. A system as recited in claim 43 , wherein the processor is further configured to learn reassignment information.

76. A system as recited in claim 53 , wherein the processor is further configured to perform thread-local garbage collection.

77. A system as recited in claim 53 , wherein the processor is further configured to store call path information associated with an allocation site of the object.

78. A system as recited in claim 53 , wherein to detect an attempt to place a reference to the object in an older frame is performed with hardware assist.

Assignments (7)
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 →
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 Apr 2, 2020
From: SILICON VALLEY BANK
To: AZUL SYSTEMS, INC.
Reel/Frame 052293/0869 →
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 AGREEMENT Recorded Nov 18, 2009
From: AZUL SYSTEMS, INC.
To: SILICON VALLEY BANK
Reel/Frame 023538/0316 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2004
From: TENE, GIL; CLICK, CLIFF N.; WOLF, MICHAEL A.; POSVA, IVAN
To: AZUL SYSTEMS, INC.
Reel/Frame 014466/0049 →
Continuity (1)
Provisional Application 6049258500 · Aug 4, 2003