← Back to Patent Explorer
US5687370A Expired / Lapsed US ⏱️ 0.0 years remaining

Transparent local and distributed memory management system

Assignee: Apple Inc
•
Filing: 1995-01-31
•
Granted: 1997-11-11
•
Expires: 2015-01-31
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The present invention discloses a system for transparent local and distributed memory management. The invention overcomes the prior art's requirement of keeping track of whether a memory space allocated to a new object or a new program or data structure can be reclaimed. According to the present invention an autorelease pool is created at the beginning of a new duty cycle. The autorelease pool retains the newly allocated memory space during the duty cycle. The autorelease pool is automatically disposed of at the end of the duty cycle. As a result of disposing the autorelease pool the newly allocated memory space is reclaimed (i.e., deallocated). The present invention is useful in distributed networks where different programming conventions on remote and local machines made the prior art's memory management task particularly difficult. The present invention is also useful in an object-oriented programming environment.

Inventors

  • 👤 Blaine Garst
  • 👤 Ali Ozer
  • 👤 Bertrand Serlet
  • 👤 Trey Matteson

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-28 13:40
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/46; G06F9/50; G06F9/5005; G06F9/5011; G06F9/5016; G06F12/00; G06F12/02; G06F12/0223; G06F12/023; G06F12/0253; G06F12/0261; Y; Y10; Y10S; Y10S707/00; Y10S707/99951; Y10S707/99956; Y10S707/99957

Claims Analysis

Total Claims: 27
Claim 1
Independent Claim 83 words
A method for reclaiming a first allocated memory space in one of a plurality of address spaces, the method comprising the steps of: creating an autorelease pool wherein said autorelease pool retains said first allocated memory space; creating a reference count in said first allocated memory space, said reference count having a value corresponding to the number of other allocated memory spaces retaining said first allocated memory space; and reclaiming said first allocated memory space when said reference count equals a predetermined value.
Claim 2
Dependent Claim 19 words
The method of claim 1 wherein said autorelease pool is an autorelease object in an object oriented programming environment.
Claim 3
Dependent Claim 30 words
The method of claim 1, wherein said reference count equals said predetermined value when none of said other allocated memory spaces have a reference to said first allocated memory space.
Claim 4
Dependent Claim 21 words
The method of claim 1 wherein said first allocated memory space is a target object in an object oriented programming environment.
Claim 5
Dependent Claim 19 words
The method of claim 4 wherein said autorelease pool is an autorelease object in said object oriented programming environment.
Claim 6
Dependent Claim 26 words
The method of claim 5 wherein said autorelease pool is disposed of at the end of the duty cycle in which said autorelease pool was created.
Claim 7
Dependent Claim 28 words
The method of claim 1, wherein said step of creating an autorelease pool further comprises storing in said autorelease pool a reference to said first allocated memory space.
Claim 8
Dependent Claim 30 words
The method of claim 7, wherein said reference count equals said predetermined value when none of said other allocated memory spaces have a reference to said first allocated memory space.
Claim 9
Dependent Claim 57 words
The method of claim 8, wherein said reference count is incremented when a reference to said first allocated memory space is created in one of said other allocated memory spaces; and wherein said reference count is decremented when a reference to said first allocated memory space is disposed of in one of said other allocated memory spaces.
Claim 10
Independent Claim 122 words
A method for reclaiming memory allocated to a target object copied from a remote machine to a local machine, said remote machine and local machine having stored therein a first plurality of objects, the method comprising the steps of: creating an autorelease object, said autorelease object containing a pointer to said target object; said remote machine and local machine containing a second plurality of objects currently using said target object, said second plurality of objects comprising at least said autorelease object and at most said first plurality of objects; creating a reference count in said target object, said reference count having a value corresponding to said second plurality; and reclaiming memory allocated to said target object when said reference count equals zero.
Claim 11
Dependent Claim 26 words
The method of claim 10 further comprising the step of sending a memory status message with an object between said local machine and said remote machine.
Claim 12
Dependent Claim 22 words
The method of claim 11 wherein said memory status message indicates when said memory allocated to said target object can be reclaimed.
Claim 13
Independent Claim 116 words
A method for reclaiming memory allocated to a target object wherein a remote machine and a local machine have stored therein a first plurality of objects, the method comprising the steps of: creating an autorelease object, said autorelease object containing a pointer to said target object; said remote machine and local machine containing a second plurality of objects currently using said target object, said second plurality of objects comprising at least said autorelease object and at most said first plurality of objects; and said remote machine creating a proxy object of said target object, said remote machine supplying said proxy object to said local machine, and said autorelease object holding a reference to said proxy object.
Claim 14
Dependent Claim 30 words
The method of claim 13 further comprising the step of reclaiming memory allocated to said target and proxy objects when a reference count held by said proxy object equals zero.
Claim 15
Dependent Claim 17 words
The method of claim 14 wherein said reference count has a value corresponding to said second plurality.
Claim 16
Dependent Claim 26 words
The method of claim 14 further comprising the step of sending a memory status message with an object between said local machine and said remote machine.
Claim 17
Dependent Claim 22 words
The method of claim 16 wherein said memory status message indicates when said memory allocated to said target object can be reclaimed.
Claim 18
Independent Claim 133 words
A method for reclaiming memory allocated to a target code block copied from a remote machine to a local machine, said remote machine and local machine having stored therein a first plurality of code blocks, the method comprising the steps of: creating an autorelease pool, said autorelease pool containing a pointer to said target code block; said remote machine containing a second plurality of code blocks currently using said target code block, said second plurality of code blocks comprising at least said autorelease pool and at most said first plurality of code blocks; creating a reference count in said target code block, said reference count having a value corresponding to said second plurality of code blocks; and reclaiming memory allocated to said target code block when said reference count equals a predetermined value.
Claim 19
Dependent Claim 30 words
The method of claim 18, wherein said reference count equals said predetermined value when none of said other allocated memory spaces have a reference to said first allocated memory space.
Claim 20
Dependent Claim 28 words
The method of claim 18, wherein said step of creating an autorelease pool further comprises storing in said autorelease pool a reference to said first allocated memory space.
Claim 21
Dependent Claim 30 words
The method of claim 20, wherein said reference count equals said predetermined value when none of said other allocated memory spaces have a reference to said first allocated memory space.
Claim 22
Dependent Claim 28 words
The method of claim 21 wherein a plurality of said autorelease pools are created; and groups of said plurality of autorelease pools are stored in a stacked manner.
Claim 23
Independent Claim 123 words
A method for reclaiming memory allocated to a target object within a remote machine wherein a remote machine and a local machine have stored therein a first plurality of objects, the method comprising the steps of: said local machine creating a first autorelease object, said remote machine creating a second autorelease object, said second autorelease object containing a pointer to said target object; said remote machine containing a second plurality of objects currently using said target object, said second plurality of objects comprising at least said second autorelease object and at most said first plurality of objects; creating a proxy object of said target object, said proxy object holding a reference and said first autorelease object holding a reference to said proxy object.
Claim 24
Dependent Claim 26 words
The method of claim 23 further comprising the step of sending a memory status message with an object between said local machine and said remote machine.
Claim 25
Dependent Claim 22 words
The method of claim 24 wherein said memory status message indicates when said memory allocated to said target object can be reclaimed.
Claim 26
Independent Claim 129 words
A method, implemented in a computer system having a memory and executing an application program, for reclaiming space in the memory, comprising the steps of: (a) sensing initiation of a duty cycle of the application program; (b) creating a target object in response to initiation of said duty cycle, said target object comprising a reference count denoting a number of other objects currently referring to said target object; (c) creating an autorelease pool, in response to said initiation of said duty cycle, said autorelease pool comprising a pointer to said target object; (d) decrementing said reference counter when one of said other objects releases said target object; (e) reclaiming said first allocated memory space when said reference count denotes that no other objects are referring to said target object.
Claim 27
Dependent Claim 28 words
The method of claim 26 wherein a plurality of said autorelease pools are created; and groups of said plurality of autorelease pools are stored in a stacked manner.

References Cited (Backward Citations)

US4775932A Cited
US4755939A Cited
US5321834A Cited
US5481721A Cited
US5355483A Cited
US5485613A Cited
US5274804A Cited
US5218698A Cited
US5491808A Cited
US5446901A Cited
US5432924A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2000-11-10 2001-05-12 2001-11-11 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2004-11-10 2005-05-12 2005-11-11 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2008-11-10 2009-05-12 2009-11-11 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag