Claims Analysis
Total Claims: 34
Claim 1
Independent Claim
455 words
A method for effecting recovery of memory resources for use by a digital data processing system, said digital data processing system comprising a computer, said digital data processing system performing real-time operations, said digital data processing system including a limited amount of memory, wherein said digital data processing system performs said real-time operations by sending ones of a plurality of messages to selected ones of a plurality of objects, said plurality of objects being allocated when needed for a specific functionality of said real-time operations and wherein a portion of said limited amount of memory is assigned to each object as said object is allocated, each of said plurality of objects being referenced when at least one other object may send a message to the object, ones of said plurality of objects becoming unreferenced when that object's functionality is no longer needed by the referencing object, said plurality of objects being stored in memory in a time-ordered sequence according to when they were allocated, and each of said plurality of objects being either marked or unmarked, wherein each of said plurality of objects is initially unmarked, said method executing in said computer as a program comprising the steps of: a. determining a dynamically growing condemned region of said memory by selecting a first object from said time-ordered plurality of objects as a beginning of said condemned region of said memory, said condemned region of said memory including all objects allocated after said first object; b. marking all objects within said condemned region of said memory that are referenced from any of said time-ordered plurality of objects that were allocated prior to said first object; c. marking objects within said condemned region of memory that are referenced from all objects within said condemned region of memory that are marked in accordance with step b; d. determining as a last object of said condemned region of memory a most recently allocated object, so that said condemned region includes all objects allocated between said first object and said last object, and so that no object allocated later in time than said last object is included in said condemned region; and e. deallocating memory resources, for use in allocating new objects in said limited amount of memory, associated with unmarked objects within said condemned region of memory; wherein each of said steps a through e comprises one or more cycles of operation, each of said cycles comprises one or more tasks, each task comprises a short, uninterruptible operation of said recovery process, wherein the latency of each task is deterministic, each pair of adjacent cycles is separated by performance of said real-time operations, and execution of each cycle is limited to a predefined fine-grained time period without replicating objects.
Claim 2
Independent Claim
455 words
A method for effecting recovery of memory resources for use by a digital data processing system, said digital data processing system comprising a computer, said digital data processing system performing real-time operations, said digital data processing system including a limited amount of memory, wherein said digital data processing system performs said real-time operations by sending ones of a plurality of messages to selected ones of a plurality of objects, said plurality of objects being allocated when needed for a specific functionality of said real-time operations and wherein a portion of said limited amount of memory is assigned to each object as said object is allocated, each of said plurality of objects being referenced when at least one other object may send a message to the object, ones of said plurality of objects becoming unreferenced when that object's functionality is no longer needed by the referencing object, said plurality of objects being stored in memory in a time-ordered sequence according to when they were allocated, and each of said plurality of objects being either marked or unmarked, wherein each of said plurality of objects is initially unmarked, said method executing in said computer as a program comprising the steps of: a. determining a dynamically growing condemned region of said memory by selecting a first object from said time-ordered plurality of objects as a beginning of said condemned region of said memory, said condemned region of said memory including all objects allocated after said first object; b. marking all objects within said condemned region of said memory that are referenced from any of said time-ordered plurality of objects that were allocated prior to said first object; c. marking objects within said condemned region of memory that are referenced from all objects within said condemned region of memory that are marked in accordance with step b; d. determining as a last object of said condemned region of memory a most recently allocated object, so that said condemned region includes all objects allocated between said first object and said last object, and so that no object allocated later in time than said last object is included in said condemned region; and e. deallocating memory resources, for use in allocating new objects in said limited amount of memory, associated with unmarked objects within said condemned region of memory; wherein each of said steps a through e comprises one or more cycles of operation, each of said cycles comprises one or more tasks, each task comprises a short, uninterruptible operation of said recovery process, wherein the latency of each task is deterministic, each pair of adjacent cycles is separated by performance of said real-time operations, and execution of each cycle is limited to a predefined fine-grained time period without replicating objects.
Claim 3
Dependent Claim
21 words
A method according to claim 1 wherein execution of said cycles is triggered by allocation of a predefined number of objects.
Claim 4
Dependent Claim
17 words
A method according to claim 2 wherein the frequency of said triggering of said cycles is variable.
Claim 5
Dependent Claim
75 words
A method according to claim 3 wherein said triggering of said cycles varies dependent upon an amount of forward progress made by a given one of said steps a through e and any step performed previous to said given step; wherein determining said amount of forward progress comprises comparing a total number of objects in the condemned region of memory allocated during said given step and all of said previous steps to a predetermined number.
Claim 6
Dependent Claim
35 words
The method of claim 4 comprising; in response to determining that said total number of objects in said condemned region is greater than said predetermined number, increasing said frequency of said triggering of said cycles.
Claim 7
Dependent Claim
66 words
A method according to claim 5 wherein determining said amount of forward progress further comprises, after comparing said total number of objects in the condemned region of memory allocated during said given step and said previous steps to a predetermined number, in response to determining that said total number of objects is less than said predetermined number, decreasing said frequency of said triggering of said cycles.
Claim 8
Dependent Claim
76 words
A method according to claim 1 wherein said step of marking objects referenced from said marked objects within said condemned region of memory comprises sequentially traversing said condemned region of memory from said first object to any most recently defined objects and determining whether each object is marked; if one of said plurality of objects is marked, determining whether said marked object references another object within said condemned region of memory and marking said referenced object.
Claim 9
Dependent Claim
52 words
A method according to claim 7 further including placing said marked referenced object on a SAVELIST, and, at a subsequent time, determining whether an object on said SAVELIST references another object within said condemned region of memory, and if so, marking said other object and placing said other object on said SAVELIST.
Claim 10
Dependent Claim
38 words
A method according to claim 8 wherein said other marked referenced object is placed on the SAVELIST if said other marked, referenced object is in a generation contemporary or prior to the generation of said marked referenced object.
Claim 11
Dependent Claim
112 words
A method according to claim 1 wherein said digital data processing system uses stacks for a portion of its processing and wherein said plurality of objects comprises stack objects and non-stack objects, said stack objects also being either marked or unmarked, and being initially unmarked, and wherein some of said stack objects are referenced by non-stack objects, said method further including the step of after said step of determining a last object of said plurality of objects, marking objects in said condemned region referenced from marked stack objects that are referenced by marked objects in said condemned region and that are referenced by objects that were allocated prior to said first object.
Claim 12
Dependent Claim
47 words
A method according to claim 10 wherein if marking objects in said condemned region referenced from a specific stack object comprises more than one cycle, copying said stack and completing marking objects in said condemned region referenced from said copied stack in one or more subsequent cycles.
Claim 13
Dependent Claim
84 words
A method according to claim 1 wherein a plurality of remembered sets contain references to ones of said plurality of objects within said condemned region from objects allocated prior to said first object of said condemned region, wherein said step of marking objects within said condemned region that are referenced from objects allocated prior to said first object comprises traversing said remembered sets and marking referenced objects in said condemned region of memory that are referenced from objects allocated prior to said first object.
Claim 14
Dependent Claim
34 words
A method according to claim 12 wherein said step of traversing said remembered set comprises validating that said objects allocated prior to said first object reference said objects in said condemned region of memory.
Claim 15
Dependent Claim
71 words
A method according to claim 1 wherein said plurality of objects are grouped in memory into generations, each of said generations comprising a predefined number of objects, said method further comprising the step of after said step of determining a condemned region, compacting a plurality of generations by regrouping adjacent generations together to form one generation when adjacent ones of said plurality of generations comprise a predetermined number objects or less.
Claim 16
Dependent Claim
65 words
A method according to claim 1 wherein, when a reference to one of said plurality of objects changes, a determination is made whether an object with the changed reference was allocated before the referenced object; if said referencing object was allocated before said referenced object, then a remembered set is created which is associated with said referenced object comprising a reference to said referencing object.
Claim 17
Independent Claim
440 words
A method for effecting recovery of memory resources for use by a digital data processing system performing real-time operations, said digital data processing system comprising a computer, said digital data processing system including a limited amount of memory, wherein said digital data processing system performs said real-time operations by sending ones of a predefined plurality of messages to selected ones of a plurality of objects, said plurality of objects being allocated when needed for a specific functionality of said real-time operations and wherein a portion of said limited amount of memory is assigned to each object as said object is allocated, each of said plurality of objects being referenced when at least one other object may send a message to the object, ones of said plurality of objects becoming unreferenced when that object's functionality is no longer needed by the referencing object, said plurality of objects being stored in memory in a time-ordered sequence according to when they were allocated, said plurality of objects being grouped into a plurality of generations each containing approximately the same number of objects, and said plurality of objects being either marked or unmarked, each of said plurality of objects being initially unmarked, said method executing in said computer as a program comprising the steps of: a. selecting a contiguous one or more of said plurality of generations as a dynamically growing condemned region of said memory by selecting a first generation from said plurality of generations as a beginning of said condemned region of said memory, said condemned region of said memory including all generations created after said first generation, b. marking all objects within said condemned region of said memory that are referenced from any of said time-ordered plurality of objects that were allocated prior to said first generation; c. marking objects within said condemned region of memory that are referenced from all objects within said condemned region of memory that are marked in accordance with step b; d. determining a last generation of said plurality of generations as an end of said condemned region of memory; and e. deallocating memory resources, for use in defining new objects in said limited amount of memory, associated with unmarked objects within said condemned region of memory; wherein each of said steps a through e comprises one or more cycles of operation, and each of said cycles comprises one or more tasks, each task comprising a short, uninterruptible operation of said recovery process, wherein the latency of each task is deterministic, said method further comprising the step of performing real-time operations between said cycles and between steps a-e as required by said computer without replicating objects.
Claim 18
Independent Claim
440 words
A method for effecting recovery of memory resources for use by a digital data processing system performing real-time operations, said digital data processing system comprising a computer, said digital data processing system including a limited amount of memory, wherein said digital data processing system performs said real-time operations by sending ones of a predefined plurality of messages to selected ones of a plurality of objects, said plurality of objects being allocated when needed for a specific functionality of said real-time operations and wherein a portion of said limited amount of memory is assigned to each object as said object is allocated, each of said plurality of objects being referenced when at least one other object may send a message to the object, ones of said plurality of objects becoming unreferenced when that object's functionality is no longer needed by the referencing object, said plurality of objects being stored in memory in a time-ordered sequence according to when they were allocated, said plurality of objects being grouped into a plurality of generations each containing approximately the same number of objects, and said plurality of objects being either marked or unmarked, each of said plurality of objects being initially unmarked, said method executing in said computer as a program comprising the steps of: a. selecting a contiguous one or more of said plurality of generations as a dynamically growing condemned region of said memory by selecting a first generation from said plurality of generations as a beginning of said condemned region of said memory, said condemned region of said memory including all generations created after said first generation, b. marking all objects within said condemned region of said memory that are referenced from any of said time-ordered plurality of objects that were allocated prior to said first generation; c. marking objects within said condemned region of memory that are referenced from all objects within said condemned region of memory that are marked in accordance with step b; d. determining a last generation of said plurality of generations as an end of said condemned region of memory; and e. deallocating memory resources, for use in defining new objects in said limited amount of memory, associated with unmarked objects within said condemned region of memory; wherein each of said steps a through e comprises one or more cycles of operation, and each of said cycles comprises one or more tasks, each task comprising a short, uninterruptible operation of said recovery process, wherein the latency of each task is deterministic, said method further comprising the step of performing real-time operations between said cycles and between steps a-e as required by said computer without replicating objects.
Claim 19
Dependent Claim
23 words
A method according to claim 16 wherein execution of said cycles is triggered by allocation of at least a predefined number of objects.
Claim 20
Dependent Claim
17 words
A method according to claim 17 wherein the frequency of said triggering of said cycles is variable.
Claim 21
Dependent Claim
51 words
A method according to claim 18 wherein said triggering of said cycles varies dependent upon an amount of forward progress made by the current and previous steps, wherein determining said amount of forward progress comprises comparing a number of generations allocated during said current and previous steps to a predetermined number.
Claim 22
Dependent Claim
31 words
A method according to claim 19 wherein, in response to determining that said number of generations is greater than said predetermined number, increasing said frequency of said triggering of said cycles.
Claim 23
Dependent Claim
31 words
A method according to claim 19 wherein, in response to determining that said number of generations is less than said predetermined number, decreasing said frequency of said triggering of said cycles.
Claim 24
Dependent Claim
113 words
A method according to claim 16 wherein said digital data processing system uses stacks for a portion of it processing and wherein said plurality of objects comprise stack objects and non-stack objects, said stack objects also being either marked or unmarked, and being initially unmarked, and wherein some of said stack objects are referenced by non-stack objects, said method further including the step of after said step of determining a last generation of said plurality of generations, marking objects in said condemned region referenced from said stack objects referenced by marked objects in said condemned regions and that are referenced by marked objects that were allocated prior in time to said first generation.
Claim 25
Dependent Claim
72 words
A method according to claim 22 wherein said step of marking objects in said condemned region referenced from said stack objects comprises one or more cycles, and if said step of marking objects in said condemned region referenced from said stack objects require more than one cycle, copying said stack and completing said step of marking objects in said condemned region referenced from said copied stack in one or more subsequent cycles.
Claim 26
Dependent Claim
100 words
A method according to claim 16 wherein a plurality of remembered sets are associated with one or more of said plurality of generations, each of said remembered sets containing references to ones of said objects in its associated generation from objects allocated prior to said generations in said condemned region, wherein said step of marking objects within said condemned region of memory that are referenced from outside of said condemned region of memory comprises traversing said remembered sets and marking referenced objects in said condemned region of memory that are referenced from objects outside of said condemned region of memory.
Claim 27
Dependent Claim
34 words
A method according to claim 24 wherein said step of traversing said remembered sets comprises validating that said objects allocated prior to said first generation reference said objects in said condemned region of memory.
Claim 28
Dependent Claim
80 words
A method according to claim 16 wherein said step of marking objects referenced from said marked objects within said condemned region of memory comprises sequentially traversing said condemned region of memory from said first object in said first generation to any most recently defined objects and determining whether each object is marked; if one of said plurality of objects is marked, determining whether said marked object references another object within said condemned region of memory and marking said referenced object.
Claim 29
Dependent Claim
50 words
A method according to claim 26 further including placing said marked referenced object on a SAVELIST, and, at a subsequent time, determining whether said marked referenced object references another object within said condemned region of memory,and, if so, marking said other object and placing said other object on the SAVELIST.
Claim 30
Dependent Claim
56 words
A method according to claim 16 further comprising, after the step of selecting said generations comprising said condemned region, the step of determining the number of objects within each generation in said condemned region and when said number is less than a predetermined number, combining two or more of said plurality of generations into one generation.
Claim 31
Dependent Claim
65 words
A method according to claim 16 wherein, when a reference to one of said plurality of objects changes, a determination is made whether an object with the changed reference was allocated before the referenced object, if said referencing object was allocated before said referenced object, then a remembered set is added comprising a reference to said referencing object which is associated with said referenced object.
Claim 32
Dependent Claim
36 words
A method according to claim 16 wherein said step of recovering memory resources comprises sequentially examining each object within said condemned region, recovering all memory associated with unmarked objects for reallocation and unmarking all marked objects.
Claim 33
Independent Claim
715 words
A method for effecting recovery of memory resources for use by a digital data processing system performing real-time operations, said digital data processing system comprising a computer, said digital data processing system including a limited amount of memory, wherein said digital data processing system performs said real-time operations by sending one of a predefined plurality of messages to selected ones of a plurality of objects, said digital data processing system using stacks for a portion of its processing, each of said plurality of objects being either stack objects or non-stack objects, said plurality of objects being allocated when needed for a specific functionality of said real-time operations and wherein a portion of said limited amount of memory is assigned to each object as said object is allocated, each of said plurality of objects being referenced when at least one other object may send a message to the object, ones of said plurality of objects becoming unreferenced when that object's functionality is no longer needed by a referencing object when said referencing object deletes its reference to the object, said plurality of objects being stored in memory in a time-ordered sequence according to when they were allocated, said plurality of objects being grouped into a plurality of generations containing approximately the same number of objects, each of said generations having a remembered set containing references to ones of said plurality of objects allocated prior in time to said each of said generations that reference objects within said each of said generations, and said plurality of objects being either marked or unmarked, each of said plurality of objects being initially unmarked, said method executing in said computer as a program comprising the steps of: a. selecting a contiguous one or more of said plurality of generations as a dynamically growing condemned region of said memory by selecting a first generation from said plurality of generations as a beginning of said condemned region of said memory, said condemned region of said memory including all generations created after said first generation; b. comparing a number of objects in each generation in said condemned region to a predefined number, and if said number of objects is less than said predefined number, combining said generation with an adjacent generation; c. marking all objects within said condemned region of memory that are referenced from objects in generations allocated prior to said first generation by traversing said remembered sets for each generation in said condemned region of memory and marking objects in said condemned region of memory that are referenced from objects in generations allocated prior to said first generation; d. marking objects referenced from said marked objects within said condemned region of memory by sequentially traversing said condemned region of memory from a first object in said first generation to any most recently defined object and determining whether each object is marked, and if one of said plurality of objects is marked, determining whether said one of said plurality of objects references another object within said condemned region of memory, and if said one of said plurality of objects references another object within said condemned region of memory, marking said referenced object and placing said referenced object on a SAVELIST for determining whether said marked object references another object within said condemned region of memory at a subsequent time; e. determining a last generation of said plurality of generations as an end of said condemned region of memory; f. marking objects in said condemned region that are referenced from stack objects allocated prior in time to said condemned region and from marked stack objects within said condemned region; and g. recovering memory resources, for use in allocating new objects in said limited amount of memory, associated with unmarked objects within said condemned region of memory by sequentially examining each object within said condemned region, removing all unmarked objects and then unmarking all marked objects; wherein each of said steps a through g comprises one or more cycles of operation, each of said cycles comprises one or more tasks comprising a short, uninterruptible operation of said recovery process; wherein the latency of each task is deterministic, each pair of adjacent cycles is separated by performance of said real-time operations, and each cycle is limited to a predefined fine-grained time period without replicating objects.
Claim 34
Independent Claim
715 words
A method for effecting recovery of memory resources for use by a digital data processing system performing real-time operations, said digital data processing system comprising a computer, said digital data processing system including a limited amount of memory, wherein said digital data processing system performs said real-time operations by sending one of a predefined plurality of messages to selected ones of a plurality of objects, said digital data processing system using stacks for a portion of its processing, each of said plurality of objects being either stack objects or non-stack objects, said plurality of objects being allocated when needed for a specific functionality of said real-time operations and wherein a portion of said limited amount of memory is assigned to each object as said object is allocated, each of said plurality of objects being referenced when at least one other object may send a message to the object, ones of said plurality of objects becoming unreferenced when that object's functionality is no longer needed by a referencing object when said referencing object deletes its reference to the object, said plurality of objects being stored in memory in a time-ordered sequence according to when they were allocated, said plurality of objects being grouped into a plurality of generations containing approximately the same number of objects, each of said generations having a remembered set containing references to ones of said plurality of objects allocated prior in time to said each of said generations that reference objects within said each of said generations, and said plurality of objects being either marked or unmarked, each of said plurality of objects being initially unmarked, said method executing in said computer as a program comprising the steps of: a. selecting a contiguous one or more of said plurality of generations as a dynamically growing condemned region of said memory by selecting a first generation from said plurality of generations as a beginning of said condemned region of said memory, said condemned region of said memory including all generations created after said first generation; b. comparing a number of objects in each generation in said condemned region to a predefined number, and if said number of objects is less than said predefined number, combining said generation with an adjacent generation; c. marking all objects within said condemned region of memory that are referenced from objects in generations allocated prior to said first generation by traversing said remembered sets for each generation in said condemned region of memory and marking objects in said condemned region of memory that are referenced from objects in generations allocated prior to said first generation; d. marking objects referenced from said marked objects within said condemned region of memory by sequentially traversing said condemned region of memory from a first object in said first generation to any most recently defined object and determining whether each object is marked, and if one of said plurality of objects is marked, determining whether said one of said plurality of objects references another object within said condemned region of memory, and if said one of said plurality of objects references another object within said condemned region of memory, marking said referenced object and placing said referenced object on a SAVELIST for determining whether said marked object references another object within said condemned region of memory at a subsequent time; e. determining a last generation of said plurality of generations as an end of said condemned region of memory; f. marking objects in said condemned region that are referenced from stack objects allocated prior in time to said condemned region and from marked stack objects within said condemned region; and g. recovering memory resources, for use in allocating new objects in said limited amount of memory, associated with unmarked objects within said condemned region of memory by sequentially examining each object within said condemned region, removing all unmarked objects and then unmarking all marked objects; wherein each of said steps a through g comprises one or more cycles of operation, each of said cycles comprises one or more tasks comprising a short, uninterruptible operation of said recovery process; wherein the latency of each task is deterministic, each pair of adjacent cycles is separated by performance of said real-time operations, and each cycle is limited to a predefined fine-grained time period without replicating objects.